]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/index/export.js
Reduce flicker in data browser
[rails.git] / app / assets / javascripts / index / export.js
index b014e8cb2acdacc61e52eb77b9de97a58f5499ab..bff1ab239bd2a39c3e027cb0c1be1b67104ec6c0 100644 (file)
@@ -17,7 +17,7 @@ $(document).ready(function () {
     map.on('draw:rectangle-created', endDrag);
 
     map.on("moveend", mapMoved);
-    map.on("layeradd layerremove", htmlUrlChanged);
+    map.on("baselayerchange", htmlUrlChanged);
 
     $("#sidebar_title").html(I18n.t('export.start_rjs.export'));
     $("#sidebar_content").html(sidebarHtml);
@@ -50,7 +50,7 @@ $(document).ready(function () {
       clearMarker();
 
       map.off("moveend", mapMoved);
-      map.off("layeradd layerremove", htmlUrlChanged);
+      map.off("baselayerchange", htmlUrlChanged);
       map.off('draw:rectangle-created', endDrag);
 
       drawHandler.disable();
@@ -61,6 +61,16 @@ $(document).ready(function () {
                             L.latLng($("#maxlat").val(), $("#maxlon").val()));
     }
 
+    function getScale() {
+      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,
+        pixelsPerMeter = map.getSize().x / meters,
+        metersPerPixel = 1 / (92 * 39.3701);
+      return Math.round(1 / (pixelsPerMeter * metersPerPixel));
+    }
+
     function getMercatorBounds() {
       var bounds = getBounds();
       return L.bounds(L.CRS.EPSG3857.project(bounds.getSouthWest()),
@@ -241,7 +251,7 @@ $(document).ready(function () {
       }
 
       if ($("#format_mapnik").prop("checked")) {
-//        $("#mapnik_scale").val(roundScale(map.getScale()));
+        $("#mapnik_scale").val(getScale());
         $("#export_mapnik").show();
 
         mapnikSizeChanged();