var oldL = window.L,
L = {};
-L.version = '0.7';
+L.version = '0.7.2';
// define Leaflet for Node module pattern loaders, including Browserify
if (typeof module === 'object' && typeof module.exports === 'object') {
}
return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');
},
-
- compileTemplate: function (str, data) {
- // based on https://gist.github.com/padolsey/6008842
- str = str.replace(/"/g, '\\\"');
- str = str.replace(/\{ *([\w_]+) *\}/g, function (str, key) {
- return '" + o["' + key + '"]' + (typeof data[key] === 'function' ? '(o)' : '') + ' + "';
- });
- // jshint evil: true
- return new Function('o', 'return "' + str + '";');
- },
-
template: function (str, data) {
- var cache = L.Util._templateCache = L.Util._templateCache || {};
- cache[str] = cache[str] || L.Util.compileTemplate(str, data);
- return cache[str](data);
+ return str.replace(/\{ *([\w_]+) *\}/g, function (str, key) {
+ var value = data[key];
+ if (value === undefined) {
+ throw new Error('No value provided for variable ' + str);
+ } else if (typeof value === 'function') {
+ value = value(data);
+ }
+ return value;
+ });
},
isArray: Array.isArray || function (obj) {
doc = document.documentElement,
ie3d = ie && ('transition' in doc.style),
- webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()),
+ webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23,
gecko3d = 'MozPerspective' in doc.style,
opera3d = 'OTransition' in doc.style,
any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d || opera3d) && !phantomjs;
if (!disable3D && L.Browser.any3d) {
el.style[L.DomUtil.TRANSFORM] = L.DomUtil.getTranslateString(point);
-
- // workaround for Android 2/3 stability (https://github.com/CloudMade/Leaflet/issues/69)
- if (L.Browser.mobileWebkit3d) {
- el.style.WebkitBackfaceVisibility = 'hidden';
- }
} else {
el.style.left = point.x + 'px';
el.style.top = point.y + 'px';
},
invalidateSize: function (options) {
+ if (!this._loaded) { return this; }
+
options = L.extend({
animate: false,
pan: true
this._sizeChanged = true;
this._initialCenter = null;
- if (!this._loaded) { return this; }
-
var newSize = this.getSize(),
oldCenter = oldSize.divideBy(2).round(),
newCenter = newSize.divideBy(2).round(),
/*
Chrome 20 layouts much faster with top/left (verify with timeline, frames)
Android 4 browser has display issues with top/left and requires transform instead
- Android 2 browser requires top/left or tiles disappear on load or first drag
- (reappear after zoom) https://github.com/CloudMade/Leaflet/issues/866
(other browsers don't currently care) - see debug/hacks/jitter.html for an example
*/
- L.DomUtil.setPosition(tile, tilePos, L.Browser.chrome || L.Browser.android23);
+ L.DomUtil.setPosition(tile, tilePos, L.Browser.chrome);
this._tiles[tilePoint.x + ':' + tilePoint.y] = tile;
_getWrapTileNum: function () {
var crs = this._map.options.crs,
size = crs.getSize(this._map.getZoom());
- return size.divideBy(this.options.tileSize);
+ return size.divideBy(this._getTileSize())._floor();
},
_adjustTilePoint: function (tilePoint) {
},
_propagateEvent: function (e) {
- e = L.extend({}, e, {
+ e = L.extend({
layer: e.target,
target: this
- });
+ }, e);
this.fire(e.type, e);
}
});
* and polylines (clipping, simplification, distances, etc.)
*/
-/*jshint bitwise:false */ // allow bitwise oprations for this file
+/*jshint bitwise:false */ // allow bitwise operations for this file
L.LineUtil = {
if (this._popup && this._popup._isOpen) {
this._popup.setLatLng(latlng);
}
+ return this;
},
setRadius: function (radius) {
},
getMousePosition: function (e, container) {
- var body = document.body,
- docEl = document.documentElement,
- //gecko makes scrollLeft more negative as you scroll in rtl, other browsers don't
- //ref: https://code.google.com/p/closure-library/source/browse/closure/goog/style/bidi.js
- x = L.DomUtil.documentIsLtr() ?
- (e.pageX ? e.pageX - body.scrollLeft - docEl.scrollLeft : e.clientX) :
- (L.Browser.gecko ? e.pageX - body.scrollLeft - docEl.scrollLeft :
- e.pageX ? e.pageX - body.scrollLeft + docEl.scrollLeft : e.clientX),
- y = e.pageY ? e.pageY - body.scrollTop - docEl.scrollTop: e.clientY,
- pos = new L.Point(x, y);
-
if (!container) {
- return pos;
+ return new L.Point(e.clientX, e.clientY);
}
- var rect = container.getBoundingClientRect(),
- left = rect.left - container.clientLeft,
- top = rect.top - container.clientTop;
+ var rect = container.getBoundingClientRect();
- return pos._subtract(new L.Point(left, top));
+ return new L.Point(
+ e.clientX - rect.left - container.clientLeft,
+ e.clientY - rect.top - container.clientTop);
},
getWheelDelta: function (e) {
L.DomUtil.enableImageDrag();
L.DomUtil.enableTextSelection();
- if (this._moved) {
+ if (this._moved && this._moving) {
// ensure drag is not fired after dragend
L.Util.cancelAnimFrame(this._animRequest);
L.Map.include(!L.DomUtil.TRANSITION ? {} : {
- _catchTransitionEnd: function () {
- if (this._animatingZoom) {
+ _catchTransitionEnd: function (e) {
+ if (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {
this._onZoomTransitionEnd();
}
},
});
-}(window, document));
+}(window, document));
\ No newline at end of file