]> git.openstreetmap.org Git - rails.git/commitdiff
Merge pull request #5388 from AntonKhorev/map-layer-can-embed
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 18 Dec 2024 16:03:10 +0000 (16:03 +0000)
committerGitHub <noreply@github.com>
Wed, 18 Dec 2024 16:03:10 +0000 (16:03 +0000)
Add 'canEmbed' layer option

app/assets/javascripts/leaflet.key.js
app/assets/javascripts/leaflet.map.js
app/assets/javascripts/leaflet.share.js
config/layers.yml

index f89ae0c3d96ff05ae496f8e309c6cd12c2544dfd..090583ced1ed65923900643c9c95016e71581b95 100644 (file)
@@ -34,13 +34,13 @@ L.OSM.key = function (options) {
     }
 
     function update() {
-      var layer = map.getMapBaseLayerId(),
+      var layerId = map.getMapBaseLayerId(),
           zoom = map.getZoom();
 
       $(".mapkey-table-entry").each(function () {
         var data = $(this).data();
         $(this).toggle(
-          layer === data.layer &&
+          layerId === data.layer &&
           (!data.zoomMin || zoom >= data.zoomMin) &&
           (!data.zoomMax || zoom <= data.zoomMax)
         );
index 02ed318acffc89eded8d0dccad99a682c8e2d05f..6537b0b233568ada1988c56d6c215789864a8f30 100644 (file)
@@ -130,11 +130,14 @@ L.OSM.Map = L.Map.extend({
   },
 
   getMapBaseLayerId: function () {
-    var baseLayerId;
-    this.eachLayer(function (layer) {
-      if (layer.options && layer.options.layerId) baseLayerId = layer.options.layerId;
-    });
-    return baseLayerId;
+    const layer = this.getMapBaseLayer();
+    if (layer) return layer.options.layerId;
+  },
+
+  getMapBaseLayer: function () {
+    for (const layer of this.baseLayers) {
+      if (this.hasLayer(layer)) return layer;
+    }
   },
 
   getUrl: function (marker) {
index 40ba020e6c36ac0ac82cd6367a934cf9cf24897d..7b0b5ef028001b14b842e139af76750e68c706a0 100644 (file)
@@ -337,7 +337,8 @@ L.OSM.share = function (options) {
     }
 
     function update() {
-      var canEmbed = map.getMapBaseLayerId() !== "tracestracktopo";
+      const layer = map.getMapBaseLayer();
+      var canEmbed = layer && layer.options.canEmbed;
       var bounds = map.getBounds();
 
       $("#link_marker")
@@ -410,15 +411,15 @@ L.OSM.share = function (options) {
       $("#mapnik_image_width").text(mapWidth);
       $("#mapnik_image_height").text(mapHeight);
 
-      const layer = map.getMapBaseLayerId();
+      const layerId = map.getMapBaseLayerId();
       const layerKeys = new Map([
         ["mapnik", "standard"],
         ["cyclemap", "cycle_map"],
         ["transportmap", "transport_map"]
       ]);
 
-      $("#mapnik_image_layer").text(layerKeys.has(layer) ? I18n.t(`javascripts.map.base.${layerKeys.get(layer)}`) : "");
-      $("#map_format").val(layer);
+      $("#mapnik_image_layer").text(layerKeys.has(layerId) ? I18n.t(`javascripts.map.base.${layerKeys.get(layerId)}`) : "");
+      $("#map_format").val(layerId);
 
       $("#map_zoom").val(map.getZoom());
       $("#mapnik_lon").val(map.getCenter().lng);
index 4f883cc9403eea879eaad8128882e27e2d04b31f..6a470687a22dfc7ee2478b982e6946e32b6f1b16 100644 (file)
@@ -2,6 +2,7 @@
   code: "M"
   layerId: "mapnik"
   nameId: "standard"
+  canEmbed: true
   credit:
     id: "make_a_donation"
     href: "https://supporting.openstreetmap.org"
@@ -11,6 +12,7 @@
   code: "Y"
   layerId: "cyclosm"
   nameId: "cyclosm"
+  canEmbed: true
   credit:
     id: "cyclosm_credit"
     children:
@@ -26,6 +28,7 @@
   layerId: "cyclemap"
   nameId: "cycle_map"
   apiKeyId: "THUNDERFOREST_KEY"
+  canEmbed: true
   credit:
     id: "thunderforest_credit"
     children:
@@ -38,6 +41,7 @@
   layerId: "transportmap"
   nameId: "transport_map"
   apiKeyId: "THUNDERFOREST_KEY"
+  canEmbed: true
   credit:
     id: "thunderforest_credit"
     children:
@@ -61,6 +65,7 @@
   code: "H"
   layerId: "hot"
   nameId: "hot"
+  canEmbed: true
   credit:
     id: "hotosm_credit"
     children: