Update to Leaflet.Locate 0.62.0
This commit is contained in:
parent
4874219ab8
commit
f45f27627c
2 changed files with 57 additions and 38 deletions
|
@ -31,7 +31,7 @@ folder 'vendor/assets' do
|
||||||
folder 'img', 'src/img'
|
folder 'img', 'src/img'
|
||||||
end
|
end
|
||||||
|
|
||||||
from 'git://github.com/domoritz/leaflet-locatecontrol.git', :tag => 'v0.54.0' do
|
from 'git://github.com/domoritz/leaflet-locatecontrol.git', :tag => 'v0.62.0' do
|
||||||
file 'leaflet.locate.js', 'src/L.Control.Locate.js'
|
file 'leaflet.locate.js', 'src/L.Control.Locate.js'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
93
vendor/assets/leaflet/leaflet.locate.js
vendored
93
vendor/assets/leaflet/leaflet.locate.js
vendored
|
@ -22,10 +22,20 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
}
|
}
|
||||||
|
|
||||||
// attach your plugin to the global 'L' variable
|
// attach your plugin to the global 'L' variable
|
||||||
if(typeof window !== 'undefined' && window.L){
|
if (typeof window !== 'undefined' && window.L){
|
||||||
window.L.Control.Locate = factory(L);
|
window.L.Control.Locate = factory(L);
|
||||||
}
|
}
|
||||||
} (function (L) {
|
} (function (L) {
|
||||||
|
var LDomUtilApplyClassesMethod = function(method, element, classNames) {
|
||||||
|
classNames = classNames.split(' ');
|
||||||
|
classNames.forEach(function(className) {
|
||||||
|
L.DomUtil[method].call(this, element, className);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var addClasses = function(el, names) { LDomUtilApplyClassesMethod('addClass', el, names); };
|
||||||
|
var removeClasses = function(el, names) { LDomUtilApplyClassesMethod('removeClass', el, names); };
|
||||||
|
|
||||||
var LocateControl = L.Control.extend({
|
var LocateControl = L.Control.extend({
|
||||||
options: {
|
options: {
|
||||||
/** Position of the control */
|
/** Position of the control */
|
||||||
|
@ -70,6 +80,11 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
* bounds that were saved.
|
* bounds that were saved.
|
||||||
*/
|
*/
|
||||||
returnToPrevBounds: false,
|
returnToPrevBounds: false,
|
||||||
|
/**
|
||||||
|
* Keep a cache of the location after the user deactivates the control. If set to false, the user has to wait
|
||||||
|
* until the locate API returns a new location before they see where they are again.
|
||||||
|
*/
|
||||||
|
cacheLocation: true,
|
||||||
/** If set, a circle that shows the location accuracy is drawn. */
|
/** If set, a circle that shows the location accuracy is drawn. */
|
||||||
drawCircle: true,
|
drawCircle: true,
|
||||||
/** If set, the marker at the users' location is drawn. */
|
/** If set, the marker at the users' location is drawn. */
|
||||||
|
@ -84,7 +99,7 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
weight: 2,
|
weight: 2,
|
||||||
opacity: 0.5
|
opacity: 0.5
|
||||||
},
|
},
|
||||||
/** Inner marker style properties. */
|
/** Inner marker style properties. Only works if your marker class supports `setStyle`. */
|
||||||
markerStyle: {
|
markerStyle: {
|
||||||
color: '#136AEC',
|
color: '#136AEC',
|
||||||
fillColor: '#2A93EE',
|
fillColor: '#2A93EE',
|
||||||
|
@ -111,6 +126,17 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
circlePadding: [0, 0],
|
circlePadding: [0, 0],
|
||||||
/** Use metric units. */
|
/** Use metric units. */
|
||||||
metric: true,
|
metric: true,
|
||||||
|
/**
|
||||||
|
* This callback can be used in case you would like to override button creation behavior.
|
||||||
|
* This is useful for DOM manipulation frameworks such as angular etc.
|
||||||
|
* This function should return an object with HtmlElement for the button (link property) and the icon (icon property).
|
||||||
|
*/
|
||||||
|
createButtonCallback: function (container, options) {
|
||||||
|
var link = L.DomUtil.create('a', 'leaflet-bar-part leaflet-bar-part-single', container);
|
||||||
|
link.title = options.strings.title;
|
||||||
|
var icon = L.DomUtil.create(options.iconElementTag, options.icon, link);
|
||||||
|
return { link: link, icon: icon };
|
||||||
|
},
|
||||||
/** This event is called in case of any location error that is not a time out error. */
|
/** This event is called in case of any location error that is not a time out error. */
|
||||||
onLocationError: function(err, control) {
|
onLocationError: function(err, control) {
|
||||||
alert(err.message);
|
alert(err.message);
|
||||||
|
@ -166,11 +192,11 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
this._layer = this.options.layer || new L.LayerGroup();
|
this._layer = this.options.layer || new L.LayerGroup();
|
||||||
this._layer.addTo(map);
|
this._layer.addTo(map);
|
||||||
this._event = undefined;
|
this._event = undefined;
|
||||||
|
this._prevBounds = null;
|
||||||
|
|
||||||
this._link = L.DomUtil.create('a', 'leaflet-bar-part leaflet-bar-part-single', container);
|
var linkAndIcon = this.options.createButtonCallback(container, this.options);
|
||||||
this._link.href = '#';
|
this._link = linkAndIcon.link;
|
||||||
this._link.title = this.options.strings.title;
|
this._icon = linkAndIcon.icon;
|
||||||
this._icon = L.DomUtil.create(this.options.iconElementTag, this.options.icon, this._link);
|
|
||||||
|
|
||||||
L.DomEvent
|
L.DomEvent
|
||||||
.on(this._link, 'click', L.DomEvent.stopPropagation)
|
.on(this._link, 'click', L.DomEvent.stopPropagation)
|
||||||
|
@ -191,7 +217,6 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
_onClick: function() {
|
_onClick: function() {
|
||||||
this._justClicked = true;
|
this._justClicked = true;
|
||||||
this._userPanned = false;
|
this._userPanned = false;
|
||||||
this._prevBounds = null;
|
|
||||||
|
|
||||||
if (this._active && !this._event) {
|
if (this._active && !this._event) {
|
||||||
// click while requesting
|
// click while requesting
|
||||||
|
@ -285,6 +310,10 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
this._map.stopLocate();
|
this._map.stopLocate();
|
||||||
this._active = false;
|
this._active = false;
|
||||||
|
|
||||||
|
if (!this.options.cacheLocation) {
|
||||||
|
this._event = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
// unbind event listeners
|
// unbind event listeners
|
||||||
this._map.off('locationfound', this._onLocationFound, this);
|
this._map.off('locationfound', this._onLocationFound, this);
|
||||||
this._map.off('locationerror', this._onLocationError, this);
|
this._map.off('locationerror', this._onLocationError, this);
|
||||||
|
@ -297,6 +326,7 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
setView: function() {
|
setView: function() {
|
||||||
this._drawMarker();
|
this._drawMarker();
|
||||||
if (this._isOutsideMapBounds()) {
|
if (this._isOutsideMapBounds()) {
|
||||||
|
this._event = undefined; // clear the current location so we can get back into the bounds
|
||||||
this.options.onLocationOutsideMapBounds(this);
|
this.options.onLocationOutsideMapBounds(this);
|
||||||
} else {
|
} else {
|
||||||
if (this.options.keepCurrentZoomLevel) {
|
if (this.options.keepCurrentZoomLevel) {
|
||||||
|
@ -348,11 +378,14 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
// small inner marker
|
// small inner marker
|
||||||
if (this.options.drawMarker) {
|
if (this.options.drawMarker) {
|
||||||
var mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle;
|
var mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle;
|
||||||
|
|
||||||
if (!this._marker) {
|
if (!this._marker) {
|
||||||
this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer);
|
this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer);
|
||||||
} else {
|
} else {
|
||||||
this._marker.setLatLng(latlng).setStyle(mStyle);
|
this._marker.setLatLng(latlng);
|
||||||
|
// If the markerClass can be updated with setStyle, update it.
|
||||||
|
if (this._marker.setStyle) {
|
||||||
|
this._marker.setStyle(mStyle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -502,23 +535,23 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
*/
|
*/
|
||||||
_setClasses: function(state) {
|
_setClasses: function(state) {
|
||||||
if (state == 'requesting') {
|
if (state == 'requesting') {
|
||||||
L.DomUtil.removeClasses(this._container, "active following");
|
removeClasses(this._container, "active following");
|
||||||
L.DomUtil.addClasses(this._container, "requesting");
|
addClasses(this._container, "requesting");
|
||||||
|
|
||||||
L.DomUtil.removeClasses(this._icon, this.options.icon);
|
removeClasses(this._icon, this.options.icon);
|
||||||
L.DomUtil.addClasses(this._icon, this.options.iconLoading);
|
addClasses(this._icon, this.options.iconLoading);
|
||||||
} else if (state == 'active') {
|
} else if (state == 'active') {
|
||||||
L.DomUtil.removeClasses(this._container, "requesting following");
|
removeClasses(this._container, "requesting following");
|
||||||
L.DomUtil.addClasses(this._container, "active");
|
addClasses(this._container, "active");
|
||||||
|
|
||||||
L.DomUtil.removeClasses(this._icon, this.options.iconLoading);
|
removeClasses(this._icon, this.options.iconLoading);
|
||||||
L.DomUtil.addClasses(this._icon, this.options.icon);
|
addClasses(this._icon, this.options.icon);
|
||||||
} else if (state == 'following') {
|
} else if (state == 'following') {
|
||||||
L.DomUtil.removeClasses(this._container, "requesting");
|
removeClasses(this._container, "requesting");
|
||||||
L.DomUtil.addClasses(this._container, "active following");
|
addClasses(this._container, "active following");
|
||||||
|
|
||||||
L.DomUtil.removeClasses(this._icon, this.options.iconLoading);
|
removeClasses(this._icon, this.options.iconLoading);
|
||||||
L.DomUtil.addClasses(this._icon, this.options.icon);
|
addClasses(this._icon, this.options.icon);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -530,8 +563,8 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
L.DomUtil.removeClass(this._container, "active");
|
L.DomUtil.removeClass(this._container, "active");
|
||||||
L.DomUtil.removeClass(this._container, "following");
|
L.DomUtil.removeClass(this._container, "following");
|
||||||
|
|
||||||
L.DomUtil.removeClasses(this._icon, this.options.iconLoading);
|
removeClasses(this._icon, this.options.iconLoading);
|
||||||
L.DomUtil.addClasses(this._icon, this.options.icon);
|
addClasses(this._icon, this.options.icon);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -554,19 +587,5 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
|
||||||
return new L.Control.Locate(options);
|
return new L.Control.Locate(options);
|
||||||
};
|
};
|
||||||
|
|
||||||
(function(){
|
|
||||||
// leaflet.js raises bug when trying to addClass / removeClass multiple classes at once
|
|
||||||
// Let's create a wrapper on it which fixes it.
|
|
||||||
var LDomUtilApplyClassesMethod = function(method, element, classNames) {
|
|
||||||
classNames = classNames.split(' ');
|
|
||||||
classNames.forEach(function(className) {
|
|
||||||
L.DomUtil[method].call(this, element, className);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
L.DomUtil.addClasses = function(el, names) { LDomUtilApplyClassesMethod('addClass', el, names); };
|
|
||||||
L.DomUtil.removeClasses = function(el, names) { LDomUtilApplyClassesMethod('removeClass', el, names); };
|
|
||||||
})();
|
|
||||||
|
|
||||||
return LocateControl;
|
return LocateControl;
|
||||||
}, window));
|
}, window));
|
||||||
|
|
Loading…
Add table
Reference in a new issue