]> git.openstreetmap.org Git - chef.git/commitdiff
imagery: support legacy location query params
authorGrant Slater <github@firefishy.com>
Tue, 30 Jul 2024 14:05:01 +0000 (15:05 +0100)
committerGrant Slater <github@firefishy.com>
Tue, 30 Jul 2024 14:05:01 +0000 (15:05 +0100)
cookbooks/imagery/templates/default/imagery.js.erb

index e5c289cfdd66c367a877368968e07fd6a499b511..88459d684bd31332d6bc5825ef9c2f3b77349ea7 100644 (file)
@@ -1,9 +1,35 @@
 <% require 'uri' %>
 <% require 'uri' %>
+function getUrlParams() {
+  const params = {};
+  const queryString = window.location.search.substring(1);
+  const regex = /([^&=]+)=([^&]*)/g;
+  let match;
+
+  while (match = regex.exec(queryString)) {
+    params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]);
+  }
+
+  return params;
+}
+
 function createMap(divName) {
 function createMap(divName) {
+  // Get URL parameters
+  const params = getUrlParams();
+  const lon = params.lon ? parseFloat(params.lon) : null;
+  const lat = params.lat ? parseFloat(params.lat) : null;
+  const zoom = params.zoom ? parseInt(params.zoom) : null;
+
   // Create a map
   var map = L.map(divName, {
     worldCopyJump: true
   // Create a map
   var map = L.map(divName, {
     worldCopyJump: true
-  }).fitBounds(<%= @bbox.to_json %>);
+  });
+
+  // Set initial view if URL parameters are available, otherwise fitBounds
+  if (lat !== null && lon !== null && zoom !== null) {
+    map.setView([lat, lon], zoom);
+  } else {
+    map.fitBounds(<%= @bbox.to_json %>);
+  }
 
   // Create a layer switcher
   var layers = L.control.layers(null, null, {collapsed:false}).addTo(map);
 
   // Create a layer switcher
   var layers = L.control.layers(null, null, {collapsed:false}).addTo(map);