Calculate scale in export
authorJohn Firebaugh <john.firebaugh@gmail.com>
Fri, 12 Oct 2012 22:14:06 +0000 (15:14 -0700)
committerJohn Firebaugh <john.firebaugh@gmail.com>
Fri, 9 Nov 2012 20:59:27 +0000 (12:59 -0800)
app/assets/javascripts/index/export.js

index 46cd105e4c812d4b6aa625fb7022ab28cb7c8cc9..bff1ab239bd2a39c3e027cb0c1be1b67104ec6c0 100644 (file)
@@ -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();