]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/leaflet.map.js
Fix lego translation with locate control
[rails.git] / app / assets / javascripts / leaflet.map.js
index fe8d74af5405bff40d7682d3279e820d2c279ab3..797a57e20db99e35c6f46e2f5b67739646dec0f2 100644 (file)
@@ -1,3 +1,5 @@
+//= require querystring
+
 L.extend(L.LatLngBounds.prototype, {
   getSize: function () {
     return (this._northEast.lat - this._southWest.lat) *
@@ -71,11 +73,11 @@ L.OSM.Map = L.Map.extend({
   },
 
   updateLayers: function (layerParam) {
-    layerParam = layerParam || "M";
-    var layersAdded = "";
+    var layers = layerParam || "M",
+        layersAdded = "";
 
     for (var i = this.baseLayers.length - 1; i >= 0; i--) {
-      if (layerParam.indexOf(this.baseLayers[i].options.code) >= 0) {
+      if (layers.indexOf(this.baseLayers[i].options.code) >= 0) {
         this.addLayer(this.baseLayers[i]);
         layersAdded = layersAdded + this.baseLayers[i].options.code;
       } else if (i === 0 && layersAdded === "") {
@@ -114,9 +116,10 @@ L.OSM.Map = L.Map.extend({
       params.mlon = latLng.lng.toFixed(precision);
     }
 
-    var url = window.location.protocol + "//" + OSM.SERVER_URL + "/",
-      query = querystring.stringify(params),
-      hash = OSM.formatHash(this);
+    var querystring = require("querystring-component"),
+        url = window.location.protocol + "//" + OSM.SERVER_URL + "/",
+        query = querystring.stringify(params),
+        hash = OSM.formatHash(this);
 
     if (query) url += "?" + query;
     if (hash) url += hash;
@@ -126,19 +129,19 @@ L.OSM.Map = L.Map.extend({
 
   getShortUrl: function (marker) {
     var zoom = this.getZoom(),
-      latLng = marker && this.hasLayer(marker) ? marker.getLatLng().wrap() : this.getCenter().wrap(),
-      str = window.location.hostname.match(/^www\.openstreetmap\.org/i) ?
-        window.location.protocol + "//osm.org/go/" :
-        window.location.protocol + "//" + window.location.hostname + "/go/",
-      char_array = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_~",
-      x = Math.round((latLng.lng + 180.0) * ((1 << 30) / 90.0)),
-      y = Math.round((latLng.lat + 90.0) * ((1 << 30) / 45.0)),
-      // JavaScript only has to keep 32 bits of bitwise operators, so this has to be
-      // done in two parts. each of the parts c1/c2 has 30 bits of the total in it
-      // and drops the last 4 bits of the full 64 bit Morton code.
-      c1 = interlace(x >>> 17, y >>> 17), c2 = interlace((x >>> 2) & 0x7fff, (y >>> 2) & 0x7fff),
-      digit,
-      i;
+        latLng = marker && this.hasLayer(marker) ? marker.getLatLng().wrap() : this.getCenter().wrap(),
+        str = window.location.hostname.match(/^www\.openstreetmap\.org/i) ?
+          window.location.protocol + "//osm.org/go/" :
+          window.location.protocol + "//" + window.location.hostname + "/go/",
+        char_array = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_~",
+        x = Math.round((latLng.lng + 180.0) * ((1 << 30) / 90.0)),
+        y = Math.round((latLng.lat + 90.0) * ((1 << 30) / 45.0)),
+        // JavaScript only has to keep 32 bits of bitwise operators, so this has to be
+        // done in two parts. each of the parts c1/c2 has 30 bits of the total in it
+        // and drops the last 4 bits of the full 64 bit Morton code.
+        c1 = interlace(x >>> 17, y >>> 17), c2 = interlace((x >>> 2) & 0x7fff, (y >>> 2) & 0x7fff),
+        digit,
+        i;
 
     for (i = 0; i < Math.ceil((zoom + 8) / 3.0) && i < 5; ++i) {
       digit = (c1 >> (24 - (6 * i))) & 0x3f;
@@ -152,15 +155,17 @@ L.OSM.Map = L.Map.extend({
 
     // Called to interlace the bits in x and y, making a Morton code.
     function interlace(x, y) {
-      x = (x | (x << 8)) & 0x00ff00ff;
-      x = (x | (x << 4)) & 0x0f0f0f0f;
-      x = (x | (x << 2)) & 0x33333333;
-      x = (x | (x << 1)) & 0x55555555;
-      y = (y | (y << 8)) & 0x00ff00ff;
-      y = (y | (y << 4)) & 0x0f0f0f0f;
-      y = (y | (y << 2)) & 0x33333333;
-      y = (y | (y << 1)) & 0x55555555;
-      return (x << 1) | y;
+      var interlaced_x = x,
+          interlaced_y = y;
+      interlaced_x = (interlaced_x | (interlaced_x << 8)) & 0x00ff00ff;
+      interlaced_x = (interlaced_x | (interlaced_x << 4)) & 0x0f0f0f0f;
+      interlaced_x = (interlaced_x | (interlaced_x << 2)) & 0x33333333;
+      interlaced_x = (interlaced_x | (interlaced_x << 1)) & 0x55555555;
+      interlaced_y = (interlaced_y | (interlaced_y << 8)) & 0x00ff00ff;
+      interlaced_y = (interlaced_y | (interlaced_y << 4)) & 0x0f0f0f0f;
+      interlaced_y = (interlaced_y | (interlaced_y << 2)) & 0x33333333;
+      interlaced_y = (interlaced_y | (interlaced_y << 1)) & 0x55555555;
+      return (interlaced_x << 1) | interlaced_y;
     }
 
     var params = {};
@@ -178,7 +183,8 @@ L.OSM.Map = L.Map.extend({
       params[this._object.type] = this._object.id;
     }
 
-    var query = querystring.stringify(params);
+    var querystring = require("querystring-component"),
+        query = querystring.stringify(params);
     if (query) {
       str += "?" + query;
     }