X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/3e3fe7718ee69bb95908dbe474fb4b15d80d329a..571e5982cc82c4fbefff0d463895a029a68921fe:/cookbooks/imagery/templates/default/imagery.js.erb?ds=sidebyside
diff --git a/cookbooks/imagery/templates/default/imagery.js.erb b/cookbooks/imagery/templates/default/imagery.js.erb
index 35168e4bb..88459d684 100644
--- a/cookbooks/imagery/templates/default/imagery.js.erb
+++ b/cookbooks/imagery/templates/default/imagery.js.erb
@@ -1,51 +1,71 @@
+<% 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) {
+ // 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).fitBounds(<%= @bbox.to_json %>);
+ var map = L.map(divName, {
+ worldCopyJump: true
+ });
- // Create layer and overlays variables
- var leaflet_layers = {}
- var leaflet_overlays = {}
+ // 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);
// Add OpenStreetMap layer
- leaflet_layers["OpenStreetMap"] = L.tileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
- attribution: "© OpenStreetMap and contributors, under an open license",
+ layers.addBaseLayer(L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
+ attribution: "© OpenStreetMap and contributors, under an open license",
maxZoom: 19
- });
-
+ }), "OpenStreetMap");
<% @layers.sort_by { |layer| layer[:name] }.each do |layer| -%>
- <% if layer[:overlay] -%>
- // Create <%= layer[:name] %> overlay
- var leaflet_overlays[<%= layer[:name] %>] = L.tileLayer(<%= layer[:url].to_json %>, {
+ // Create <%= layer[:name] %> layer
+ var <%= layer[:name].gsub("-", "_") %> = L.tileLayer(<%= layer[:url].to_json %>, {
attribution: <%= layer[:attribution].to_json %>,
maxZoom: <%= layer[:maxZoom].to_json %>
});
- <% if layer[:default] -%>
- // Add <%= layer[:name] %> to map
- leaflet_overlays[<%= layer[:name] %>].addTo(map);
- <% end -%>
-
+ // Add <%= layer[:name] %> to layer switcher
+ <% if layer[:overlay] -%>
+ layers.addOverlay(<%= layer[:name].gsub("-", "_") %>, <%= layer[:title].to_json %>);
<% else %>
- // Create <%= layer[:name] %> layer
- var leaflet_layers[<%= layer[:name] %>] = L.tileLayer(<%= layer[:url].to_json %>, {
- attribution: <%= layer[:attribution].to_json %>,
- maxZoom: <%= layer[:maxZoom].to_json %>
- });
+ layers.addBaseLayer(<%= layer[:name].gsub("-", "_") %>, <%= layer[:title].to_json %>);
+ <% end -%>
<% if layer[:default] -%>
// Add <%= layer[:name] %> to map
- leaflet_layers[<%= layer[:name] %>].addTo(map);
- <% end -%>
-
+ <%= layer[:name].gsub("-", "_") %>.addTo(map);
<% end -%>
<% end -%>
- // Create a layer switcher
- var layers = L.control.layers(leaflet_layers, leaflet_overlays, {collapsed:false});
+ // Add the permalink control
+ map.addControl(new L.Control.Permalink());
+
+ var lc = L.control.locate({
+ position: 'topright'
+ }).addTo(map);
- // Add the layer switch to the mao
- layers.addTo(map);
- map.addControl(new L.Control.Permalink({text: 'Permalink', layers: leaflet_layers, overlays: leaflet_overlays}));
return map;
}