Update Leaflet to 0.6.3

This commit is contained in:
Tom Hughes 2013-07-17 19:18:13 +01:00
parent 9331ea5d71
commit e4ed5ae275
3 changed files with 127 additions and 92 deletions

View file

@ -1,11 +1,14 @@
folder 'vendor/assets' do
folder 'leaflet' do
from 'git://github.com/Leaflet/Leaflet.git', :tag => 'v0.6.1' do
file 'leaflet.css', 'dist/leaflet.css'
file 'leaflet.ie.css', 'dist/leaflet.ie.css'
file 'leaflet.js', 'dist/leaflet-src.js'
folder 'images', 'dist/images'
end
file 'leaflet.js', 'http://cdn.leafletjs.com/leaflet-0.6.3/leaflet-src.js'
file 'leaflet.css', 'http://cdn.leafletjs.com/leaflet-0.6.3/leaflet.css'
file 'leaflet.ie.css', 'http://cdn.leafletjs.com/leaflet-0.6.3/leaflet.ie.css'
[ 'layers.png', 'layers-2x.png',
'marker-icon.png', 'marker-icon-2x.png',
'marker-shadow.png' ].each do |image|
file "images/#{image}", "http://cdn.leafletjs.com/leaflet-0.6.3/images/#{image}"
end
from 'git://github.com/kajic/leaflet-locationfilter.git' do
file 'leaflet.locationfilter.css', 'src/locationfilter.css'

View file

@ -53,6 +53,10 @@
width: 0;
height: 0;
}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
-moz-user-select: none;
}
.leaflet-tile-pane { z-index: 2; }
.leaflet-objects-pane { z-index: 3; }
@ -374,11 +378,11 @@
.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-control-zoom {
.leaflet-touch .leaflet-bar {
box-shadow: none;
}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-control-zoom {
.leaflet-touch .leaflet-bar {
border: 4px solid rgba(0,0,0,0.3);
}

View file

@ -7,7 +7,7 @@
var oldL = window.L,
L = {};
L.version = '0.6.1';
L.version = '0.6.3';
// define Leaflet for Node module pattern loaders, including Browserify
if (typeof module === 'object' && typeof module.exports === 'object') {
@ -1092,46 +1092,30 @@ L.DomUtil.TRANSITION_END =
var userSelectProperty = L.DomUtil.testProp(
['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);
var userDragProperty = L.DomUtil.testProp(
['userDrag', 'WebkitUserDrag', 'OUserDrag', 'MozUserDrag', 'msUserDrag']);
L.extend(L.DomUtil, {
disableTextSelection: function () {
L.DomEvent.on(window, 'selectstart', L.DomEvent.preventDefault);
if (userSelectProperty) {
var style = document.documentElement.style;
this._userSelect = style[userSelectProperty];
style[userSelectProperty] = 'none';
} else {
L.DomEvent.on(window, 'selectstart', L.DomEvent.stop);
}
},
enableTextSelection: function () {
L.DomEvent.off(window, 'selectstart', L.DomEvent.preventDefault);
if (userSelectProperty) {
document.documentElement.style[userSelectProperty] = this._userSelect;
delete this._userSelect;
} else {
L.DomEvent.off(window, 'selectstart', L.DomEvent.stop);
}
},
disableImageDrag: function () {
if (userDragProperty) {
var style = document.documentElement.style;
this._userDrag = style[userDragProperty];
style[userDragProperty] = 'none';
} else {
L.DomEvent.on(window, 'dragstart', L.DomEvent.stop);
}
L.DomEvent.on(window, 'dragstart', L.DomEvent.preventDefault);
},
enableImageDrag: function () {
if (userDragProperty) {
document.documentElement.style[userDragProperty] = this._userDrag;
delete this._userDrag;
} else {
L.DomEvent.off(window, 'dragstart', L.DomEvent.stop);
}
L.DomEvent.off(window, 'dragstart', L.DomEvent.preventDefault);
}
});
})();
@ -1629,7 +1613,7 @@ L.Map = L.Class.extend({
return this.fire('moveend');
},
setMaxBounds: function (bounds) {
setMaxBounds: function (bounds, options) {
bounds = L.latLngBounds(bounds);
this.options.maxBounds = bounds;
@ -1646,7 +1630,7 @@ L.Map = L.Class.extend({
if (this._loaded) {
if (this._zoom < minZoom) {
this.setView(bounds.getCenter(), minZoom);
this.setView(bounds.getCenter(), minZoom, options);
} else {
this.panInsideBounds(bounds);
}
@ -1724,10 +1708,14 @@ L.Map = L.Class.extend({
if (this._loaded) {
layer.onRemove(this);
this.fire('layerremove', {layer: layer});
}
delete this._layers[id];
if (this._loaded) {
this.fire('layerremove', {layer: layer});
}
if (this._zoomBoundLayers[id]) {
delete this._zoomBoundLayers[id];
this._updateZoomLevels();
@ -1856,18 +1844,15 @@ L.Map = L.Class.extend({
},
getMinZoom: function () {
var z1 = this.options.minZoom || 0,
z2 = this._layersMinZoom || 0,
z3 = this._boundsMinZoom || 0;
return Math.max(z1, z2, z3);
var z1 = this._layersMinZoom === undefined ? -Infinity : this._layersMinZoom,
z2 = this._boundsMinZoom === undefined ? -Infinity : this._boundsMinZoom;
return this.options.minZoom === undefined ? Math.max(z1, z2) : this.options.minZoom;
},
getMaxZoom: function () {
var z1 = this.options.maxZoom === undefined ? Infinity : this.options.maxZoom,
z2 = this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom;
return Math.min(z1, z2);
return this.options.maxZoom === undefined ?
(this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) :
this.options.maxZoom;
},
getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number
@ -2187,16 +2172,15 @@ L.Map = L.Class.extend({
},
_onMouseClick: function (e) {
// jshint camelcase: false
if (!this._loaded || (!e._simulated && this.dragging && this.dragging.moved()) || e._leaflet_stop) { return; }
if (!this._loaded || (!e._simulated && this.dragging && this.dragging.moved()) ||
L.DomEvent._skipped(e)) { return; }
this.fire('preclick');
this._fireMouseEvent(e);
},
_fireMouseEvent: function (e) {
// jshint camelcase: false
if (!this._loaded || e._leaflet_stop) { return; }
if (!this._loaded || L.DomEvent._skipped(e)) { return; }
var type = e.type;
@ -2606,10 +2590,7 @@ L.TileLayer = L.Class.extend({
var className = 'leaflet-tile-container leaflet-zoom-animated';
this._bgBuffer = L.DomUtil.create('div', className, this._container);
this._bgBuffer.style.zIndex = 1;
this._tileContainer = L.DomUtil.create('div', className, this._container);
this._tileContainer.style.zIndex = 2;
} else {
this._tileContainer = this._container;
@ -3049,6 +3030,11 @@ L.TileLayer.Canvas = L.TileLayer.extend({
},
redraw: function () {
if (this._map) {
this._reset({hard: true});
this._update();
}
for (var i in this._tiles) {
this._redrawTile(this._tiles[i]);
}
@ -3538,10 +3524,10 @@ L.Marker = L.Class.extend({
if (newShadow !== this._shadow) {
this._removeShadow();
addShadow = true;
}
if (newShadow) {
L.DomUtil.addClass(newShadow, classToAdd);
}
if (newShadow) {
L.DomUtil.addClass(newShadow, classToAdd);
}
this._shadow = newShadow;
@ -3679,6 +3665,8 @@ L.Marker = L.Class.extend({
if (this._map) {
this._updateOpacity();
}
return this;
},
_updateOpacity: function () {
@ -3904,6 +3892,7 @@ L.Popup = L.Class.extend({
this._contentNode = L.DomUtil.create('div', prefix + '-content', wrapper);
L.DomEvent.on(this._contentNode, 'mousewheel', L.DomEvent.stopPropagation);
L.DomEvent.on(this._contentNode, 'MozMousePixelScroll', L.DomEvent.stopPropagation);
L.DomEvent.on(wrapper, 'contextmenu', L.DomEvent.stopPropagation);
this._tipContainer = L.DomUtil.create('div', prefix + '-tip-container', container);
this._tip = L.DomUtil.create('div', prefix + '-tip', this._tipContainer);
@ -4304,6 +4293,9 @@ L.FeatureGroup = L.LayerGroup.extend({
},
removeLayer: function (layer) {
if (!this.hasLayer(layer)) {
return this;
}
if (layer in this._layers) {
layer = this._layers[layer];
}
@ -4373,9 +4365,11 @@ L.Path = L.Class.extend({
// how much to extend the clip area around the map view
// (relative to its size, e.g. 0.5 is half the screen in each direction)
// set it so that SVG element doesn't exceed 1280px (vectors flicker on dragend if it is)
CLIP_PADDING: L.Browser.mobile ?
Math.max(0, Math.min(0.5,
(1280 / Math.max(window.innerWidth, window.innerHeight) - 1) / 2)) : 0.5
CLIP_PADDING: (function () {
var max = L.Browser.mobile ? 1280 : 2000,
target = (max / Math.max(window.outerWidth, window.outerHeight) - 1) / 2;
return Math.max(0, Math.min(0.5, target));
})()
},
options: {
@ -5635,6 +5629,16 @@ L.polygon = function (latlngs, options) {
}
return this;
},
getLatLngs: function () {
var latlngs = [];
this.eachLayer(function (layer) {
latlngs.push(layer.getLatLngs());
});
return latlngs;
}
});
}
@ -5936,12 +5940,13 @@ L.GeoJSON = L.FeatureGroup.extend({
addData: function (geojson) {
var features = L.Util.isArray(geojson) ? geojson : geojson.features,
i, len;
i, len, feature;
if (features) {
for (i = 0, len = features.length; i < len; i++) {
// Only add this if geometry or geometries are set and not null
if (features[i].geometries || features[i].geometry || features[i].features) {
feature = features[i];
if (feature.geometries || feature.geometry || feature.features || feature.coordinates) {
this.addData(features[i]);
}
}
@ -6319,13 +6324,30 @@ L.DomEvent = {
getMousePosition: function (e, container) {
var body = document.body,
var ie7 = L.Browser.ie7,
body = document.body,
docEl = document.documentElement,
x = e.pageX ? e.pageX : e.clientX + body.scrollLeft + docEl.scrollLeft,
y = e.pageY ? e.pageY : e.clientY + body.scrollTop + docEl.scrollTop,
pos = new L.Point(x, y);
x = 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),
rect = container.getBoundingClientRect(),
left = rect.left - container.clientLeft,
top = rect.top - container.clientTop;
return (container ? pos._subtract(L.DomUtil.getViewportOffset(container)) : pos);
// webkit (and ie <= 7) handles RTL scrollLeft different to everyone else
// https://code.google.com/p/closure-library/source/browse/trunk/closure/goog/style/bidi.js
if (!L.DomUtil.documentIsLtr() && (L.Browser.webkit || ie7)) {
left += container.scrollWidth - container.clientWidth;
// ie7 shows the scrollbar by default and provides clientWidth counting it, so we
// need to add it back in if it is visible; scrollbar is on the left as we are RTL
if (ie7 && L.DomUtil.getStyle(container, 'overflow-y') !== 'hidden' &&
L.DomUtil.getStyle(container, 'overflow') !== 'hidden') {
left += 17;
}
}
return pos._subtract(new L.Point(left, top));
},
getWheelDelta: function (e) {
@ -6341,10 +6363,18 @@ L.DomEvent = {
return delta;
},
_fakeStop: function stop(e) {
// fakes stopPropagation by setting a special event flag checked in Map mouse events handler
// jshint camelcase: false
e._leaflet_stop = true;
_skipEvents: {},
_fakeStop: function (e) {
// fakes stopPropagation by setting a special event flag, checked/reset with L.DomEvent._skipped(e)
L.DomEvent._skipEvents[e.type] = true;
},
_skipped: function (e) {
var skipped = this._skipEvents[e.type];
// reset when checking, as it's only used in map container and propagates outside of the map
this._skipEvents[e.type] = false;
return skipped;
},
// check if element really left/entered the event target (for mouseenter/mouseleave)
@ -6460,6 +6490,7 @@ L.Draggable = L.Class.extend({
if (L.Draggable._disabled) { return; }
L.DomUtil.disableImageDrag();
L.DomUtil.disableTextSelection();
var first = e.touches ? e.touches[0] : e,
el = first.target;
@ -6499,7 +6530,6 @@ L.Draggable = L.Class.extend({
this._startPos = L.DomUtil.getPosition(this._element).subtract(offset);
if (!L.Browser.touch) {
L.DomUtil.disableTextSelection();
L.DomUtil.addClass(document.body, 'leaflet-dragging');
}
}
@ -6519,7 +6549,6 @@ L.Draggable = L.Class.extend({
_onUp: function () {
if (!L.Browser.touch) {
L.DomUtil.enableTextSelection();
L.DomUtil.removeClass(document.body, 'leaflet-dragging');
}
@ -6530,6 +6559,7 @@ L.Draggable = L.Class.extend({
}
L.DomUtil.enableImageDrag();
L.DomUtil.enableTextSelection();
if (this._moved) {
// ensure drag is not fired after dragend
@ -6606,6 +6636,8 @@ L.Map.Drag = L.Handler.extend({
if (map.options.worldCopyJump) {
this._draggable.on('predrag', this._onPreDrag, this);
map.on('viewreset', this._onViewReset, this);
this._onViewReset();
}
}
this._draggable.enable();
@ -8340,9 +8372,14 @@ L.PosAnimation = L.Class.extend({
},
_onStep: function () {
var stepPos = this._getPos();
if (!stepPos) {
this._onTransitionEnd();
return;
}
// jshint camelcase: false
// make L.DomUtil.getPosition return intermediate position value during animation
this._el._leaflet_pos = this._getPos();
this._el._leaflet_pos = stepPos;
this.fire('step');
},
@ -8359,8 +8396,9 @@ L.PosAnimation = L.Class.extend({
if (L.Browser.any3d) {
matches = style[L.DomUtil.TRANSFORM].match(this._transformRe);
left = matches ? parseFloat(matches[1]) : 0;
top = matches ? parseFloat(matches[2]) : 0;
if (!matches) { return; }
left = parseFloat(matches[1]);
top = parseFloat(matches[2]);
} else {
left = parseFloat(style.left);
top = parseFloat(style.top);
@ -8590,6 +8628,10 @@ L.Map.include(!L.DomUtil.TRANSITION ? {} : {
}
},
_nothingToAnimate: function () {
return !this._container.getElementsByClassName('leaflet-zoom-animated').length;
},
_tryAnimatedZoom: function (center, zoom, options) {
if (this._animatingZoom) { return true; }
@ -8597,7 +8639,7 @@ L.Map.include(!L.DomUtil.TRANSITION ? {} : {
options = options || {};
// don't animate if disabled, not supported or zoom difference is too large
if (!this._zoomAnimated || options.animate === false ||
if (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() ||
Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; }
// offset is the pixel coords of the zoom origin relative to the current center
@ -8664,28 +8706,13 @@ L.Map.include(!L.DomUtil.TRANSITION ? {} : {
L.TileLayer.include({
_animateZoom: function (e) {
var firstFrame = false;
if (!this._animating) {
this._animating = true;
firstFrame = true;
}
if (firstFrame) {
this._prepareBgBuffer();
}
var bg = this._bgBuffer;
if (firstFrame) {
//prevent bg buffer from clearing right after zoom
clearTimeout(this._clearBgBufferTimer);
// hack to make sure transform is updated before running animation
L.Util.falseFn(bg.offsetWidth);
}
var transform = L.DomUtil.TRANSFORM,
var bg = this._bgBuffer,
transform = L.DomUtil.TRANSFORM,
initialTransform = e.delta ? L.DomUtil.getTranslateString(e.delta) : bg.style[transform],
scaleStr = L.DomUtil.getScaleString(e.scale, e.origin);
@ -8699,9 +8726,7 @@ L.TileLayer.include({
bg = this._bgBuffer;
front.style.visibility = '';
front.style.zIndex = 2;
bg.style.zIndex = 1;
front.parentNode.appendChild(front); // Bring to fore
// force reflow
L.Util.falseFn(bg.offsetWidth);
@ -8745,6 +8770,9 @@ L.TileLayer.include({
bg = this._bgBuffer = front;
this._stopLoadingImages(bg);
//prevent bg buffer from clearing right after zoom
clearTimeout(this._clearBgBufferTimer);
},
_getLoadedTilesPercentage: function (container) {
@ -8864,7 +8892,7 @@ L.Map.include({
var data = {
latlng: latlng,
bounds: bounds,
bounds: bounds
};
for (var i in pos.coords) {