]> git.openstreetmap.org Git - chef.git/commitdiff
imagery: add permalink support
authorGrant Slater <grant.slater@wearefriday.com>
Fri, 17 Jun 2016 16:45:57 +0000 (17:45 +0100)
committerGrant Slater <grant.slater@wearefriday.com>
Fri, 17 Jun 2016 16:45:57 +0000 (17:45 +0100)
cookbooks/imagery/files/default/imagery.css
cookbooks/imagery/templates/default/imagery.js.erb
cookbooks/imagery/templates/default/index.html.erb

index 59fd9bb6635f731a210bca7e8cce77faa8d1f845..2a72162cbf2430515562fa445b138dfa0b334c4b 100644 (file)
@@ -10,3 +10,9 @@
   max-height: 700px;/*less than map height! */
   overflow: auto;
 }
+
+@media print {
+  .leaflet-control {
+    display:none
+  }
+}
index a728ef60e2ca6fb6833cb63def759725b6656c9d..35168e4bb2d9f738e684e3361f5082159e196037 100644 (file)
@@ -2,37 +2,50 @@ function createMap(divName) {
   // Create a map
   var map = L.map(divName).fitBounds(<%= @bbox.to_json %>);
 
-  // Create a layer switcher
-  var layers = L.control.layers(null, null, {collapsed:false});
+  // Create layer and overlays variables
+  var leaflet_layers = {}
+  var leaflet_overlays = {}
 
   // Add OpenStreetMap layer
-  layers.addBaseLayer(L.tileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
+  leaflet_layers["OpenStreetMap"] = L.tileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
     attribution: "© <a target=\"_parent\" href=\"http://www.openstreetmap.org\">OpenStreetMap</a> and contributors, under an <a target=\"_parent\" href=\"http://www.openstreetmap.org/copyright\">open license</a>",
     maxZoom: 19
-  }), "OpenStreetMap");
+  });
 
   <% @layers.sort_by { |layer| layer[:name] }.each do |layer| -%>
-  // Create <%= layer[:name] %> layer
-  var <%= layer[:name] %> = L.tileLayer(<%= layer[:url].to_json %>, {
+
+  <% if layer[:overlay] -%>
+  // Create <%= layer[:name] %> overlay
+  var leaflet_overlays[<%= layer[:name] %>] = L.tileLayer(<%= layer[:url].to_json %>, {
     attribution: <%= layer[:attribution].to_json %>,
     maxZoom: <%= layer[:maxZoom].to_json %>
   });
 
-  // Add <%= layer[:name] %> to layer switcher
-  <% if layer[:overlay] -%>
-  layers.addOverlay(<%= layer[:name] %>, <%= layer[:title].to_json %>);
-  <% else %>
-  layers.addBaseLayer(<%= layer[:name] %>, <%= layer[:title].to_json %>);
+  <% if layer[:default] -%>
+  // Add <%= layer[:name] %> to map
+  leaflet_overlays[<%= layer[:name] %>].addTo(map);
   <% end -%>
 
+  <% 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 %>
+  });
+
   <% if layer[:default] -%>
   // Add <%= layer[:name] %> to map
-  <%= layer[:name] %>.addTo(map);
+  leaflet_layers[<%= layer[:name] %>].addTo(map);
+  <% end -%>
+
   <% end -%>
   <% end -%>
 
+  // Create a layer switcher
+  var layers = L.control.layers(leaflet_layers, leaflet_overlays, {collapsed:false});
+
   // 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;
 }
index 74b7d53d0192f3975f2f4d96d5f085bf527e696c..951abe8c888f9316f93493648dd7918dbc2268e6 100644 (file)
@@ -9,12 +9,10 @@
     <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.ie.css" />
     <![endif]-->
     <script type="text/javascript" src="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.js"></script>
+    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-plugins/1.6.1/control/Permalink.min.js"></script>
+    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-plugins/1.6.1/control/Permalink.Layer.min.js"></script>
+    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-plugins/1.6.1/control/Permalink.Overlay.js"></script>
     <script type="text/javascript" src="imagery.js"></script>
-    <style type="text/css">
-    @media print {
-      .leaflet-control { display:none }
-    }
-    </style>
   </head>
   <body onload="createMap('map')">
     <div id="map"></div>