]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/index/export.js
Fix layer map bounciness (#361)
[rails.git] / app / assets / javascripts / index / export.js
index 04c6b6ff7236868037ae0a22738ec9e1ca2c1786..417dfabd35be892cdf5e9ad391083d30c35de215 100644 (file)
@@ -1,4 +1,4 @@
-$(document).ready(function () {
+function initializeExport(map) {
   $("#exportanchor").click(function (e) {
     $.ajax({ url: $(this).data('url'), success: function (sidebarHtml) {
       startExport(sidebarHtml);
   $("#exportanchor").click(function (e) {
     $.ajax({ url: $(this).data('url'), success: function (sidebarHtml) {
       startExport(sidebarHtml);
@@ -15,7 +15,7 @@ $(document).ready(function () {
 
     var locationFilter = new L.LocationFilter({
       enableButton: false,
 
     var locationFilter = new L.LocationFilter({
       enableButton: false,
-      adjustButton: false,
+      adjustButton: false
     }).addTo(map);
 
     locationFilter.on("change", filterChanged);
     }).addTo(map);
 
     locationFilter.on("change", filterChanged);
@@ -38,7 +38,7 @@ $(document).ready(function () {
 
     openSidebar();
 
 
     openSidebar();
 
-    if (map.hasLayer(layers[0].layer)) {
+    if (map.getMapBaseLayerId() == "mapnik") {
       $("#format_mapnik").prop("checked", true);
     }
 
       $("#format_mapnik").prop("checked", true);
     }
 
@@ -67,7 +67,7 @@ $(document).ready(function () {
       var bounds = map.getBounds(),
         centerLat = bounds.getCenter().lat,
         halfWorldMeters = 6378137 * Math.PI * Math.cos(centerLat * Math.PI / 180),
       var bounds = map.getBounds(),
         centerLat = bounds.getCenter().lat,
         halfWorldMeters = 6378137 * Math.PI * Math.cos(centerLat * Math.PI / 180),
-        meters = halfWorldMeters * (bounds.getNorthEast().lng - bounds.getSouthWest().lng) / 180,
+        meters = halfWorldMeters * (bounds.getEast() - bounds.getWest()) / 180,
         pixelsPerMeter = map.getSize().x / meters,
         metersPerPixel = 1 / (92 * 39.3701);
       return Math.round(1 / (pixelsPerMeter * metersPerPixel));
         pixelsPerMeter = map.getSize().x / meters,
         metersPerPixel = 1 / (92 * 39.3701);
       return Math.round(1 / (pixelsPerMeter * metersPerPixel));
@@ -83,15 +83,18 @@ $(document).ready(function () {
       var bounds = getBounds();
 
       map.fitBounds(bounds);
       var bounds = getBounds();
 
       map.fitBounds(bounds);
-
-      enableFilter();
       locationFilter.setBounds(bounds);
 
       locationFilter.setBounds(bounds);
 
+      enableFilter();
       validateControls();
       mapnikSizeChanged();
     }
 
     function enableFilter() {
       validateControls();
       mapnikSizeChanged();
     }
 
     function enableFilter() {
+      if (!locationFilter.getBounds().isValid()) {
+        locationFilter.setBounds(map.getBounds().pad(-0.2));
+      }
+
       $("#drag_box").hide();
       locationFilter.enable();
     }
       $("#drag_box").hide();
       locationFilter.enable();
     }
@@ -149,10 +152,10 @@ $(document).ready(function () {
     function setBounds(bounds) {
       var toPrecision = zoomPrecision(map.getZoom());
 
     function setBounds(bounds) {
       var toPrecision = zoomPrecision(map.getZoom());
 
-      $("#minlon").val(toPrecision(bounds.getWestLng()));
-      $("#minlat").val(toPrecision(bounds.getSouthLat()));
-      $("#maxlon").val(toPrecision(bounds.getEastLng()));
-      $("#maxlat").val(toPrecision(bounds.getNorthLat()));
+      $("#minlon").val(toPrecision(bounds.getWest()));
+      $("#minlat").val(toPrecision(bounds.getSouth()));
+      $("#maxlon").val(toPrecision(bounds.getEast()));
+      $("#maxlat").val(toPrecision(bounds.getNorth()));
 
       mapnikSizeChanged();
       htmlUrlChanged();
 
       mapnikSizeChanged();
       htmlUrlChanged();
@@ -183,9 +186,9 @@ $(document).ready(function () {
 
     function htmlUrlChanged() {
       var bounds = getBounds();
 
     function htmlUrlChanged() {
       var bounds = getBounds();
-      var layerName = getMapBaseLayer().keyid;
+      var layerName = map.getMapBaseLayerId();
 
 
-      var url = "http://" + OSM.SERVER_URL + "/export/embed.html?bbox=" + bounds.toBBOX() + "&layer=" + layerName;
+      var url = "http://" + OSM.SERVER_URL + "/export/embed.html?bbox=" + bounds.toBBoxString() + "&layer=" + layerName;
       var markerUrl = "";
 
       if ($("#marker_lat").val() && $("#marker_lon").val()) {
       var markerUrl = "";
 
       if ($("#marker_lat").val() && $("#marker_lon").val()) {
@@ -200,7 +203,7 @@ $(document).ready(function () {
 
       var zoom = map.getBoundsZoom(bounds);
 
 
       var zoom = map.getBoundsZoom(bounds);
 
-      var layers = getMapLayers();
+      var layers = map.getLayersCode();
 
       var text = I18n.t('export.start_rjs.view_larger_map');
       var escaped = [];
 
       var text = I18n.t('export.start_rjs.view_larger_map');
       var escaped = [];
@@ -251,16 +254,16 @@ $(document).ready(function () {
     }
 
     function maxMapnikScale() {
     }
 
     function maxMapnikScale() {
-      var bounds = getMercatorBounds();
+      var size = getMercatorBounds().getSize();
 
 
-      return Math.floor(Math.sqrt(bounds.getWidth() * bounds.getHeight() / 0.3136));
+      return Math.floor(Math.sqrt(size.x * size.y / 0.3136));
     }
 
     function mapnikImageSize(scale) {
     }
 
     function mapnikImageSize(scale) {
-      var bounds = getMercatorBounds();
+      var size = getMercatorBounds().getSize();
 
 
-      return {w: Math.round(bounds.getWidth() / scale / 0.00028),
-              h: Math.round(bounds.getHeight() / scale / 0.00028)};
+      return {w: Math.round(size.x / scale / 0.00028),
+              h: Math.round(size.y / scale / 0.00028)};
     }
 
     function roundScale(scale) {
     }
 
     function roundScale(scale) {
@@ -278,4 +281,4 @@ $(document).ready(function () {
       validateControls();
     }
   }
       validateControls();
     }
   }
-});
+}