]> git.openstreetmap.org Git - rails.git/blobdiff - vendor/assets/leaflet/leaflet.js
Update to Leaflet 0.7.3
[rails.git] / vendor / assets / leaflet / leaflet.js
index e40bfbfafdc09a82ee0b89c519f939a587a801ef..4947090340a6588078c0ba8f791b05d7f3b83902 100644 (file)
@@ -7,7 +7,7 @@
 var oldL = window.L,
     L = {};
 
-L.version = '0.7.2';
+L.version = '0.7.3';
 
 // define Leaflet for Node module pattern loaders, including Browserify
 if (typeof module === 'object' && typeof module.exports === 'object') {
@@ -2104,13 +2104,13 @@ L.Map = L.Class.extend({
                var loading = !this._loaded;
                this._loaded = true;
 
+               this.fire('viewreset', {hard: !preserveMapOffset});
+
                if (loading) {
                        this.fire('load');
                        this.eachLayer(this._layerAdd, this);
                }
 
-               this.fire('viewreset', {hard: !preserveMapOffset});
-
                this.fire('move');
 
                if (zoomChanged || afterZoomAnim) {
@@ -5083,7 +5083,8 @@ L.Path = (L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? L.Path :
                }
 
                this._requestUpdate();
-
+               
+               this.fire('remove');
                this._map = null;
        },
 
@@ -6605,12 +6606,12 @@ L.DomEvent = {
                var timeStamp = (e.timeStamp || e.originalEvent.timeStamp),
                        elapsed = L.DomEvent._lastClick && (timeStamp - L.DomEvent._lastClick);
 
-               // are they closer together than 1000ms yet more than 100ms?
+               // are they closer together than 500ms yet more than 100ms?
                // Android typically triggers them ~300ms apart while multiple listeners
                // on the same event should be triggered far faster;
                // or check if click is simulated on the element, and if it is, reject any non-simulated events
 
-               if ((elapsed && elapsed > 100 && elapsed < 1000) || (e.target._simulatedClick && !e._simulated)) {
+               if ((elapsed && elapsed > 100 && elapsed < 500) || (e.target._simulatedClick && !e._simulated)) {
                        L.DomEvent.stop(e);
                        return;
                }
@@ -6708,6 +6709,7 @@ L.Draggable = L.Class.extend({
                    offset = newPoint.subtract(this._startPoint);
 
                if (!offset.x && !offset.y) { return; }
+               if (L.Browser.touch && Math.abs(offset.x) + Math.abs(offset.y) < 3) { return; }
 
                L.DomEvent.preventDefault(e);
 
@@ -6718,7 +6720,8 @@ L.Draggable = L.Class.extend({
                        this._startPos = L.DomUtil.getPosition(this._element).subtract(offset);
 
                        L.DomUtil.addClass(document.body, 'leaflet-dragging');
-                       L.DomUtil.addClass((e.target || e.srcElement), 'leaflet-drag-target');
+                       this._lastTarget = e.target || e.srcElement;
+                       L.DomUtil.addClass(this._lastTarget, 'leaflet-drag-target');
                }
 
                this._newPos = this._startPos.add(offset);
@@ -6734,9 +6737,13 @@ L.Draggable = L.Class.extend({
                this.fire('drag');
        },
 
-       _onUp: function (e) {
+       _onUp: function () {
                L.DomUtil.removeClass(document.body, 'leaflet-dragging');
-               L.DomUtil.removeClass((e.target || e.srcElement), 'leaflet-drag-target');
+
+               if (this._lastTarget) {
+                       L.DomUtil.removeClass(this._lastTarget, 'leaflet-drag-target');
+                       this._lastTarget = null;
+               }
 
                for (var i in L.Draggable.MOVE) {
                        L.DomEvent
@@ -7391,7 +7398,7 @@ L.Map.TouchZoom = L.Handler.extend({
                    center = map.layerPointToLatLng(origin),
                    zoom = map.getScaleZoom(this._scale);
 
-               map._animateZoom(center, zoom, this._startCenter, this._scale, this._delta);
+               map._animateZoom(center, zoom, this._startCenter, this._scale, this._delta, false, true);
        },
 
        _onTouchEnd: function () {
@@ -8376,8 +8383,8 @@ L.Control.Layers = L.Control.extend({
 
        onRemove: function (map) {
                map
-                   .off('layeradd', this._onLayerChange)
-                   .off('layerremove', this._onLayerChange);
+                   .off('layeradd', this._onLayerChange, this)
+                   .off('layerremove', this._onLayerChange, this);
        },
 
        addBaseLayer: function (layer, name) {
@@ -8918,9 +8925,11 @@ L.Map.include(!L.DomUtil.TRANSITION ? {} : {
                return true;
        },
 
-       _animateZoom: function (center, zoom, origin, scale, delta, backwards) {
+       _animateZoom: function (center, zoom, origin, scale, delta, backwards, forTouchZoom) {
 
-               this._animatingZoom = true;
+               if (!forTouchZoom) {
+                       this._animatingZoom = true;
+               }
 
                // put transform transition on all layers with leaflet-zoom-animated class
                L.DomUtil.addClass(this._mapPane, 'leaflet-zoom-anim');
@@ -8934,14 +8943,16 @@ L.Map.include(!L.DomUtil.TRANSITION ? {} : {
                        L.Draggable._disabled = true;
                }
 
-               this.fire('zoomanim', {
-                       center: center,
-                       zoom: zoom,
-                       origin: origin,
-                       scale: scale,
-                       delta: delta,
-                       backwards: backwards
-               });
+               L.Util.requestAnimFrame(function () {
+                       this.fire('zoomanim', {
+                               center: center,
+                               zoom: zoom,
+                               origin: origin,
+                               scale: scale,
+                               delta: delta,
+                               backwards: backwards
+                       });
+               }, this);
        },
 
        _onZoomTransitionEnd: function () {