From aa682241261f027f44caeec5037560604dd43b29 Mon Sep 17 00:00:00 2001 From: Marwin Hochfelsner <50826859+hlfan@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:34:33 +0000 Subject: [PATCH] Extend MapLibre GeolocateControl class --- app/assets/javascripts/dashboard.js | 7 +------ app/assets/javascripts/maplibre/controls.js | 13 +++++++++++++ app/assets/javascripts/user.js | 7 +------ 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/dashboard.js b/app/assets/javascripts/dashboard.js index f2e8b3027..26bfdaf03 100644 --- a/app/assets/javascripts/dashboard.js +++ b/app/assets/javascripts/dashboard.js @@ -11,12 +11,7 @@ $(function () { const position = $("html").attr("dir") === "rtl" ? "top-left" : "top-right"; const navigationControl = new OSM.MapLibre.NavigationControl(); - const geolocateControl = new maplibregl.GeolocateControl({ - positionOptions: { - enableHighAccuracy: true - }, - trackUserLocation: true - }); + const geolocateControl = new OSM.MapLibre.GeolocateControl(); map.addControl(new OSM.MapLibre.CombinedControlGroup([navigationControl, geolocateControl]), position); map.touchZoomRotate.disableRotation(); map.keyboard.disableRotation(); diff --git a/app/assets/javascripts/maplibre/controls.js b/app/assets/javascripts/maplibre/controls.js index c5d9660e9..b4b398a4a 100644 --- a/app/assets/javascripts/maplibre/controls.js +++ b/app/assets/javascripts/maplibre/controls.js @@ -1,3 +1,16 @@ +OSM.MapLibre.GeolocateControl = class extends maplibregl.GeolocateControl { + constructor({ positionOptions = {}, ...options } = {}) { + super({ + positionOptions: { + enableHighAccuracy: true, + ...positionOptions + }, + trackUserLocation: true, + ...options + }); + } +}; + OSM.MapLibre.NavigationControl = class extends maplibregl.NavigationControl { constructor(options = {}) { super({ diff --git a/app/assets/javascripts/user.js b/app/assets/javascripts/user.js index d61914674..05f703060 100644 --- a/app/assets/javascripts/user.js +++ b/app/assets/javascripts/user.js @@ -60,12 +60,7 @@ $(function () { const position = $("html").attr("dir") === "rtl" ? "top-left" : "top-right"; const navigationControl = new OSM.MapLibre.NavigationControl(); - const geolocateControl = new maplibregl.GeolocateControl({ - positionOptions: { - enableHighAccuracy: true - }, - trackUserLocation: true - }); + const geolocateControl = new OSM.MapLibre.GeolocateControl(); map.addControl(new OSM.MapLibre.CombinedControlGroup([navigationControl, geolocateControl]), position); map.touchZoomRotate.disableRotation(); map.keyboard.disableRotation(); -- 2.39.5