]> git.openstreetmap.org Git - chef.git/blob - cookbooks/imagery/templates/default/imagery.js.erb
imagery: update leaflet + add locate control
[chef.git] / cookbooks / imagery / templates / default / imagery.js.erb
1 function createMap(divName) {
2   // Create a map
3   var map = L.map(divName, {
4     worldCopyJump: true
5   }).fitBounds(<%= @bbox.to_json %>);
6
7   // Create a layer switcher
8   var layers = L.control.layers(null, null, {collapsed:false}).addTo(map);
9
10   // Add OpenStreetMap layer
11   layers.addBaseLayer(L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
12     attribution: "© <a target=\"_parent\" href=\"https://www.openstreetmap.org\">OpenStreetMap</a> and contributors, under an <a target=\"_parent\" href=\"https://www.openstreetmap.org/copyright\">open license</a>",
13     maxZoom: 19
14   }), "OpenStreetMap");
15   <% @layers.sort_by { |layer| layer[:name] }.each do |layer| -%>
16
17   // Create <%= layer[:name] %> layer
18   var <%= layer[:name] %> = L.tileLayer(<%= layer[:url].to_json %>, {
19     attribution: <%= layer[:attribution].to_json %>,
20     maxZoom: <%= layer[:maxZoom].to_json %>
21   });
22
23   // Add <%= layer[:name] %> to layer switcher
24   <% if layer[:overlay] -%>
25   layers.addOverlay(<%= layer[:name] %>, <%= layer[:title].to_json %>);
26   <% else %>
27   layers.addBaseLayer(<%= layer[:name] %>, <%= layer[:title].to_json %>);
28   <% end -%>
29
30   <% if layer[:default] -%>
31   // Add <%= layer[:name] %> to map
32   <%= layer[:name] %>.addTo(map);
33   <% end -%>
34   <% end -%>
35
36   // Add the permalink control
37   map.addControl(new L.Control.Permalink());
38
39   var lc = L.control.locate({
40     position: 'topright'
41   }).addTo(map);
42
43   return map;
44 }