mirror of
https://github.com/netzmacht/contao-leaflet-libraries.git
synced 2025-11-28 11:04:07 +01:00
Update leaflet markercluster to version 1.0.2.
This commit is contained in:
@@ -14,7 +14,7 @@ This package contains following packages:
|
|||||||
|
|
||||||
- [leaflet 1.0.3](http://leafletjs.com)
|
- [leaflet 1.0.3](http://leafletjs.com)
|
||||||
- [Leaflet-providers 1.1.15](http://leaflet-extras.github.io/leaflet-providers)
|
- [Leaflet-providers 1.1.15](http://leaflet-extras.github.io/leaflet-providers)
|
||||||
- [Leaflet.markercluster 1.0.0](https://github.com/Leaflet/Leaflet.markercluster)
|
- [Leaflet.markercluster 1.0.2](https://github.com/Leaflet/Leaflet.markercluster)
|
||||||
- [Leaflet-omnivore 0.3.4](https://github.com/mapbox/leaflet-omnivore)
|
- [Leaflet-omnivore 0.3.4](https://github.com/mapbox/leaflet-omnivore)
|
||||||
- [Leaflet.loading 0.1.23](https://github.com/ebrelsford/Leaflet.loading)
|
- [Leaflet.loading 0.1.23](https://github.com/ebrelsford/Leaflet.loading)
|
||||||
- [Leaflet.Control.FullScreen 1.4.2](https://github.com/brunob/leaflet.fullscreen)
|
- [Leaflet.Control.FullScreen 1.4.2](https://github.com/brunob/leaflet.fullscreen)
|
||||||
|
|||||||
@@ -3,7 +3,80 @@ Leaflet.markercluster
|
|||||||
|
|
||||||
(all changes without author notice are by [@danzel](https://github.com/danzel))
|
(all changes without author notice are by [@danzel](https://github.com/danzel))
|
||||||
|
|
||||||
## Master
|
## 1.0.2 (2016-01-27)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Support `layeradd` and `layerremove` events [#647](https://github.com/Leaflet/Leaflet.markercluster/issues/647)
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
* Add support for maps with negative minZoom [#704](https://github.com/Leaflet/Leaflet.markercluster/issues/704)
|
||||||
|
* Fixed zoomToShowLayer() markers disappearing bug (by [@z3ut](https://github.com/z3ut)) [#739](https://github.com/Leaflet/Leaflet.markercluster/issues/739)
|
||||||
|
* Fix an issue when opening a popup inside of zoomToShowLayer
|
||||||
|
* If a marker is moved with an open popup on it, re-open the popup after moving it. [#651](https://github.com/Leaflet/Leaflet.markercluster/issues/651)
|
||||||
|
|
||||||
|
|
||||||
|
## 1.0.1 (2016-01-25)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Add install and build steps with jake (by [@kazes](https://github.com/kazes)) [#733](https://github.com/Leaflet/Leaflet.markercluster/pull/733)
|
||||||
|
* Readme improvements (by [@ghybs](https://github.com/ghybs), [@bertyhell](https://github.com/bertyhell)) [#734](https://github.com/Leaflet/Leaflet.markercluster/pull/738), [#734](https://github.com/Leaflet/Leaflet.markercluster/pull/738
|
||||||
|
* Bump all examples to leaflet 1.0.3
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
* Fixed leaflet 1.0.2 bug where clearLayers would throw an exception (by [@marcianoviereck92](https://github.com/marcianoviereck92)) [#746](https://github.com/Leaflet/Leaflet.markercluster/pull/746)
|
||||||
|
|
||||||
|
|
||||||
|
## 1.0.0 (2016-10-03)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Compatibility with Leaflet 1.0.0 (by [@danzel](https://githum.com/danzel), [@Eschon](https://github.com/Eschon), [@ghybs](https://github.com/ghybs), [@IvanSanchez](https://github.com/IvanSanchez))
|
||||||
|
* Support moving markers [#57](https://github.com/Leaflet/Leaflet.markercluster/issues/57)
|
||||||
|
* chunkedLoading option to keep browser more responsive during larging a load data set [#292](https://github.com/Leaflet/Leaflet.markercluster/issues/292)
|
||||||
|
* maxClusterRadius can be a function (by [@Schwanksta](https://github.com/Schwanksta)) [#298](https://github.com/Leaflet/Leaflet.markercluster/issues/298)
|
||||||
|
* Spiderfy without zooming when all markers at same location (by [@rdenniston](https://github.com/rdenniston), [@ghybs](https://github.com/ghybs)) [#415](https://github.com/Leaflet/Leaflet.markercluster/issues/415), [#606](https://github.com/Leaflet/Leaflet.markercluster/issues/606)
|
||||||
|
* On becoming visible, markers retain their original opacity. (by [@IvanSanchez](https://github.com/IvanSanchez)) [#444](https://github.com/Leaflet/Leaflet.markercluster/issues/444)
|
||||||
|
* Spiderleg Polyline options (by [@mikeatlas](https://github.com/mikeatlas)) [#466](https://github.com/Leaflet/Leaflet.markercluster/issues/466)
|
||||||
|
* Extra methods to allow refreshing cluster icons (by [@ghybs](https://github.com/ghybs)) [#564](https://github.com/Leaflet/Leaflet.markercluster/issues/564)
|
||||||
|
* Ability to disable animations (by [@ghybs](https://github.com/ghybs)) [#578](https://github.com/Leaflet/Leaflet.markercluster/issues/578)
|
||||||
|
* Optimized performance of bulk addLayers and removeLayers (by [@ghybs](https://github.com/ghybs)) [#584](https://github.com/Leaflet/Leaflet.markercluster/issues/584)
|
||||||
|
* Replaced spiderfy legs animation from SMIL to CSS transition (by [@ghybs](https://github.com/ghybs)) [#585](https://github.com/Leaflet/Leaflet.markercluster/issues/585)
|
||||||
|
* Provide more detailed context information on the spiderfied event (by [@evanvosberg](https://github.com/evanvosberg)) [#421](https://github.com/Leaflet/Leaflet.markercluster/issues/421)
|
||||||
|
* Add unspiderfied event
|
||||||
|
* Readme updates (by [@ghybs](https://github.com/ghybs), [@tomchadwin](https://github.com/tomchadwin) [@Cyrille37](https://github.com/Cyrille37) [@franckl](https://github.com/franckl) [@mikeatlas](https://github.com/mikeatlas)
|
||||||
|
[@rdenniston](https://github.com/rdenniston) [@maackle](https://github.com/maackle) [@fureigh](https://github.com/fureigh) [@Wildhoney](https://github.com/Wildhoney) [@Schwanksta](https://github.com/Schwanksta) [@frankrowe](https://github.com/frankrowe))
|
||||||
|
* Improve adding and removing nested LayerGroups (by [@ghybs](https://github.com/ghybs)) [#624](https://github.com/Leaflet/Leaflet.markercluster/pull/624)
|
||||||
|
* Add public unspiderfy method (by [@zverev](https://github.com/zverev)) [#617](https://github.com/Leaflet/Leaflet.markercluster/pull/617)
|
||||||
|
* Optimized performance of bulk add with complex icon create function (by [@mlazowik](https://github.com/mlazowik)) [#697](https://github.com/Leaflet/Leaflet.markercluster/pull/697)
|
||||||
|
* Remove leaflet from peerDependencies (by [@tyleralves](https://github.com/tyleralves)) [#703](https://github.com/Leaflet/Leaflet.markercluster/pull/703)
|
||||||
|
* Simplified _recursively (by [@ghybs](https://github.com/ghybs)) [#656](https://github.com/Leaflet/Leaflet.markercluster/pull/656)
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
* Fix getBounds when removeOutsideVisibleBounds: false is set. [#321](https://github.com/Leaflet/Leaflet.markercluster/issues/321)
|
||||||
|
* Fix zoomToShowLayer fails after initial spiderfy [#286](https://github.com/Leaflet/Leaflet.markercluster/issues/286)
|
||||||
|
* Fix cluster not disappearing on Android [#344](https://github.com/Leaflet/Leaflet.markercluster/issues/344)
|
||||||
|
* Fix RemoveLayers() when spiderified (by [@Grsmto](https://github.com/Grsmto)) [#358](https://github.com/Leaflet/Leaflet.markercluster/issues/358)
|
||||||
|
* Remove lines from map when removing cluster (by [@olive380](https://github.com/olive380)) [#532](https://github.com/Leaflet/Leaflet.markercluster/issues/532)
|
||||||
|
* Fix getConvexHull when all markers are located at same latitude (by [@olive380](https://github.com/olive380)) [#533](https://github.com/Leaflet/Leaflet.markercluster/issues/533)
|
||||||
|
* Fix removeLayers when cluster is not on the map (by [@eschon](https://github.com/eschon)) [#556](https://github.com/Leaflet/Leaflet.markercluster/issues/556)
|
||||||
|
* Improved zoomToShowLayer with callback check (by [@ghybs](https://github.com/ghybs)) [#572](https://github.com/Leaflet/Leaflet.markercluster/issues/572)
|
||||||
|
* Improved reliability of RefreshSpec test suite for PhantomJS (by [@ghybs](https://github.com/ghybs)) [#577](https://github.com/Leaflet/Leaflet.markercluster/issues/577)
|
||||||
|
* Corrected effect of removeOutsideVisibleBounds option (by [@ghybs](https://github.com/ghybs)) [#575](https://github.com/Leaflet/Leaflet.markercluster/issues/575)
|
||||||
|
* Fix getLayer when provided a string [#531](https://github.com/Leaflet/Leaflet.markercluster/issues/531)
|
||||||
|
* Documentation improvements (by [@ghybs](https://github.com/ghybs)) [#579](https://github.com/Leaflet/Leaflet.markercluster/issues/579)
|
||||||
|
* Correct _getExpandedVisibleBounds for Max Latitude (by [@ghybs](https://github.com/ghybs)) [#587](https://github.com/Leaflet/Leaflet.markercluster/issues/587)
|
||||||
|
* Correct unspiderfy vector (by [@ghybs](https://github.com/ghybs)) [#604](https://github.com/Leaflet/Leaflet.markercluster/issues/604)
|
||||||
|
* Remove "leaflet-cluster-anim" class on map remove while spiderfied (by [@ghybs](https://github.com/ghybs)) [#607](https://github.com/Leaflet/Leaflet.markercluster/issues/607)
|
||||||
|
* Fix disableClusteringAtZoom maxZoom troubles (by [@OriginalSin](https://github.com/OriginalSin)) [#609](https://github.com/Leaflet/Leaflet.markercluster/issues/609)
|
||||||
|
* Fix clusters not disappearing when they were near the edge on mobile (by [@ghybs](https://github.com/ghybs)) [#529](https://github.com/Leaflet/Leaflet.markercluster/issues/529)
|
||||||
|
* Remove leaflet from dependencies (by [@ghybs](https://github.com/ghybs)) [#639](https://github.com/Leaflet/Leaflet.markercluster/issues/639)
|
||||||
|
* Fix interaction between zoomOrSpiderfy and disableClusteringAtZoom (by [@ghybs](https://github.com/ghybs)) [#633](https://github.com/Leaflet/Leaflet.markercluster/issues/633) [#648](https://github.com/Leaflet/Leaflet.markercluster/issues/648)
|
||||||
|
|
||||||
|
|
||||||
##0.4 (2013-12-19)
|
##0.4 (2013-12-19)
|
||||||
|
|
||||||
@@ -16,6 +89,7 @@ Leaflet.markercluster
|
|||||||
|
|
||||||
* Fix some cases zoomToShowLayer wouldn't work (Reported by [@absemetov](https://github.com/absemetov)) [#203](https://github.com/Leaflet/Leaflet.markercluster/issues/203) [#228](https://github.com/Leaflet/Leaflet.markercluster/issues/228) [#286](https://github.com/Leaflet/Leaflet.markercluster/issues/286)
|
* Fix some cases zoomToShowLayer wouldn't work (Reported by [@absemetov](https://github.com/absemetov)) [#203](https://github.com/Leaflet/Leaflet.markercluster/issues/203) [#228](https://github.com/Leaflet/Leaflet.markercluster/issues/228) [#286](https://github.com/Leaflet/Leaflet.markercluster/issues/286)
|
||||||
|
|
||||||
|
|
||||||
##0.3 (2013-12-18)
|
##0.3 (2013-12-18)
|
||||||
|
|
||||||
### Improvements
|
### Improvements
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ Provides Beautiful Animated Marker Clustering functionality for [Leaflet](http:/
|
|||||||
|
|
||||||
*Requires Leaflet 1.0.0*
|
*Requires Leaflet 1.0.0*
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
For a Leaflet 0.7 compatible version, [use the leaflet-0.7 branch](https://github.com/Leaflet/Leaflet.markercluster/tree/leaflet-0.7)<br>
|
For a Leaflet 0.7 compatible version, [use the leaflet-0.7 branch](https://github.com/Leaflet/Leaflet.markercluster/tree/leaflet-0.7)<br>
|
||||||
For a Leaflet 0.5 compatible version, [Download b128e950](https://github.com/Leaflet/Leaflet.markercluster/archive/b128e950d8f5d7da5b60bd0aa9a88f6d3dd17c98.zip)<br>
|
For a Leaflet 0.5 compatible version, [Download b128e950](https://github.com/Leaflet/Leaflet.markercluster/archive/b128e950d8f5d7da5b60bd0aa9a88f6d3dd17c98.zip)<br>
|
||||||
For a Leaflet 0.4 compatible version, [Download the 0.2 release](https://github.com/Leaflet/Leaflet.markercluster/archive/0.2.zip)
|
For a Leaflet 0.4 compatible version, [Download the 0.2 release](https://github.com/Leaflet/Leaflet.markercluster/archive/0.2.zip)
|
||||||
@@ -16,6 +18,8 @@ removed link to h1 and indented back 2 spaces all links.
|
|||||||
-->
|
-->
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
* [Using the plugin](#using-the-plugin)
|
* [Using the plugin](#using-the-plugin)
|
||||||
|
* [Building, testing and linting scripts](#building-testing-and-linting-scripts)
|
||||||
|
* [Examples](#examples)
|
||||||
* [Usage](#usage)
|
* [Usage](#usage)
|
||||||
* [Options](#options)
|
* [Options](#options)
|
||||||
* [Defaults](#defaults)
|
* [Defaults](#defaults)
|
||||||
@@ -43,9 +47,23 @@ removed link to h1 and indented back 2 spaces all links.
|
|||||||
|
|
||||||
|
|
||||||
## Using the plugin
|
## Using the plugin
|
||||||
|
Include the plugin CSS and JS files on your page after Leaflet files, using your method of choice:
|
||||||
|
* [Download the `v1.0.0` release](https://github.com/Leaflet/Leaflet.markercluster/archive/v1.0.0.zip)
|
||||||
|
* Use unpkg CDN: `https://unpkg.com/leaflet.markercluster@1.0.0/dist/`
|
||||||
|
* Install with npm: `npm install leaflet.markercluster`
|
||||||
|
|
||||||
Install with npm: `npm install leaflet.markercluster`
|
In each case, use files in the `dist` folder:
|
||||||
|
* `MarkerCluster.css`
|
||||||
|
* `MarkerCluster.Default.css` (not needed if you use your own `iconCreateFunction` instead of the default one)
|
||||||
|
* `leaflet.markercluster.js` (or `leaflet.markercluster-src.js` for the non-minified version)
|
||||||
|
|
||||||
|
### Building, testing and linting scripts
|
||||||
|
Install jake `npm install -g jake` then run `npm install`
|
||||||
|
* To check the code for errors and build Leaflet from source, run `jake`.
|
||||||
|
* To run the tests, run `jake test`.
|
||||||
|
* For a custom build, open `build/build.html` in the browser and follow the instructions
|
||||||
|
|
||||||
|
### Examples
|
||||||
See the included examples for usage.
|
See the included examples for usage.
|
||||||
|
|
||||||
The [realworld example](http://leaflet.github.io/Leaflet.markercluster/example/marker-clustering-realworld.388.html) is a good place to start, it uses all of the defaults of the clusterer.
|
The [realworld example](http://leaflet.github.io/Leaflet.markercluster/example/marker-clustering-realworld.388.html) is a good place to start, it uses all of the defaults of the clusterer.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "leaflet.markercluster",
|
"name": "leaflet.markercluster",
|
||||||
"version": "0.4.0-hotfix.1",
|
"version": "1.0.2",
|
||||||
"homepage": "https://github.com/Leaflet/Leaflet.markercluster",
|
"homepage": "https://github.com/Leaflet/Leaflet.markercluster",
|
||||||
"authors": [
|
"authors": [
|
||||||
"Dave Leaver <danzel@localhost.geek.nz>"
|
"Dave Leaver <danzel@localhost.geek.nz>"
|
||||||
@@ -22,6 +22,6 @@
|
|||||||
"tests"
|
"tests"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"leaflet": ">= 0.7.0"
|
"leaflet": ">= 1.0.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,6 +69,12 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
|
|
||||||
this._queue = [];
|
this._queue = [];
|
||||||
|
|
||||||
|
this._childMarkerEventHandlers = {
|
||||||
|
'dragstart': this._childMarkerDragStart,
|
||||||
|
'move': this._childMarkerMoved,
|
||||||
|
'dragend': this._childMarkerDragEnd,
|
||||||
|
};
|
||||||
|
|
||||||
// Hook the appropriate animation methods.
|
// Hook the appropriate animation methods.
|
||||||
var animate = L.DomUtil.TRANSITION && this.options.animate;
|
var animate = L.DomUtil.TRANSITION && this.options.animate;
|
||||||
L.extend(this, animate ? this._withAnimation : this._noAnimation);
|
L.extend(this, animate ? this._withAnimation : this._noAnimation);
|
||||||
@@ -85,11 +91,13 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
//Don't cluster non point data
|
//Don't cluster non point data
|
||||||
if (!layer.getLatLng) {
|
if (!layer.getLatLng) {
|
||||||
this._nonPointGroup.addLayer(layer);
|
this._nonPointGroup.addLayer(layer);
|
||||||
|
this.fire('layeradd', { layer: layer });
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this._map) {
|
if (!this._map) {
|
||||||
this._needsClustering.push(layer);
|
this._needsClustering.push(layer);
|
||||||
|
this.fire('layeradd', { layer: layer });
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,6 +113,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._addLayer(layer, this._maxZoom);
|
this._addLayer(layer, this._maxZoom);
|
||||||
|
this.fire('layeradd', { layer: layer });
|
||||||
|
|
||||||
// Refresh bounds and weighted positions.
|
// Refresh bounds and weighted positions.
|
||||||
this._topClusterLevel._recalculateBounds();
|
this._topClusterLevel._recalculateBounds();
|
||||||
@@ -139,6 +148,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
//Non point layers
|
//Non point layers
|
||||||
if (!layer.getLatLng) {
|
if (!layer.getLatLng) {
|
||||||
this._nonPointGroup.removeLayer(layer);
|
this._nonPointGroup.removeLayer(layer);
|
||||||
|
this.fire('layerremove', { layer: layer });
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,6 +156,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {
|
if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {
|
||||||
this._needsRemoving.push(layer);
|
this._needsRemoving.push(layer);
|
||||||
}
|
}
|
||||||
|
this.fire('layerremove', { layer: layer });
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,13 +171,14 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
|
|
||||||
//Remove the marker from clusters
|
//Remove the marker from clusters
|
||||||
this._removeLayer(layer, true);
|
this._removeLayer(layer, true);
|
||||||
|
this.fire('layerremove', { layer: layer });
|
||||||
|
|
||||||
// Refresh bounds and weighted positions.
|
// Refresh bounds and weighted positions.
|
||||||
this._topClusterLevel._recalculateBounds();
|
this._topClusterLevel._recalculateBounds();
|
||||||
|
|
||||||
this._refreshClustersIcons();
|
this._refreshClustersIcons();
|
||||||
|
|
||||||
layer.off('move', this._childMarkerMoved, this);
|
layer.off(this._childMarkerEventHandlers, this);
|
||||||
|
|
||||||
if (this._featureGroup.hasLayer(layer)) {
|
if (this._featureGroup.hasLayer(layer)) {
|
||||||
this._featureGroup.removeLayer(layer);
|
this._featureGroup.removeLayer(layer);
|
||||||
@@ -179,7 +191,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
//Takes an array of markers and adds them in bulk
|
//Takes an array of markers and adds them in bulk
|
||||||
addLayers: function (layersArray) {
|
addLayers: function (layersArray, skipLayerAddEvent) {
|
||||||
if (!L.Util.isArray(layersArray)) {
|
if (!L.Util.isArray(layersArray)) {
|
||||||
return this.addLayer(layersArray);
|
return this.addLayer(layersArray);
|
||||||
}
|
}
|
||||||
@@ -228,6 +240,9 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
//Not point data, can't be clustered
|
//Not point data, can't be clustered
|
||||||
if (!m.getLatLng) {
|
if (!m.getLatLng) {
|
||||||
npg.addLayer(m);
|
npg.addLayer(m);
|
||||||
|
if (!skipLayerAddEvent) {
|
||||||
|
this.fire('layeradd', { layer: m });
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,6 +251,9 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._addLayer(m, this._maxZoom);
|
this._addLayer(m, this._maxZoom);
|
||||||
|
if (!skipLayerAddEvent) {
|
||||||
|
this.fire('layeradd', { layer: m });
|
||||||
|
}
|
||||||
|
|
||||||
//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will
|
//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will
|
||||||
if (m.__parent) {
|
if (m.__parent) {
|
||||||
@@ -328,6 +346,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
if (this.hasLayer(m)) {
|
if (this.hasLayer(m)) {
|
||||||
this._needsRemoving.push(m);
|
this._needsRemoving.push(m);
|
||||||
}
|
}
|
||||||
|
this.fire('layerremove', { layer: m });
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -368,10 +387,12 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
|
|
||||||
if (!m.__parent) {
|
if (!m.__parent) {
|
||||||
npg.removeLayer(m);
|
npg.removeLayer(m);
|
||||||
|
this.fire('layerremove', { layer: m });
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._removeLayer(m, true, true);
|
this._removeLayer(m, true, true);
|
||||||
|
this.fire('layerremove', { layer: m });
|
||||||
|
|
||||||
if (fg.hasLayer(m)) {
|
if (fg.hasLayer(m)) {
|
||||||
fg.removeLayer(m);
|
fg.removeLayer(m);
|
||||||
@@ -412,9 +433,9 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
this._nonPointGroup.clearLayers();
|
this._nonPointGroup.clearLayers();
|
||||||
|
|
||||||
this.eachLayer(function (marker) {
|
this.eachLayer(function (marker) {
|
||||||
marker.off('move', this._childMarkerMoved, this);
|
marker.off(this._childMarkerEventHandlers, this);
|
||||||
delete marker.__parent;
|
delete marker.__parent;
|
||||||
});
|
}, this);
|
||||||
|
|
||||||
if (this._map) {
|
if (this._map) {
|
||||||
//Reset _topClusterLevel and the DistanceGrids
|
//Reset _topClusterLevel and the DistanceGrids
|
||||||
@@ -510,7 +531,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
|
|
||||||
//Zoom down to show the given layer (spiderfying if necessary) then calls the callback
|
//Zoom down to show the given layer (spiderfying if necessary) then calls the callback
|
||||||
zoomToShowLayer: function (layer, callback) {
|
zoomToShowLayer: function (layer, callback) {
|
||||||
|
|
||||||
if (typeof callback !== 'function') {
|
if (typeof callback !== 'function') {
|
||||||
callback = function () {};
|
callback = function () {};
|
||||||
}
|
}
|
||||||
@@ -537,20 +558,9 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
this._map.on('moveend', showMarker, this);
|
this._map.on('moveend', showMarker, this);
|
||||||
this._map.panTo(layer.getLatLng());
|
this._map.panTo(layer.getLatLng());
|
||||||
} else {
|
} else {
|
||||||
var moveStart = function () {
|
|
||||||
this._map.off('movestart', moveStart, this);
|
|
||||||
moveStart = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this._map.on('movestart', moveStart, this);
|
|
||||||
this._map.on('moveend', showMarker, this);
|
this._map.on('moveend', showMarker, this);
|
||||||
this.on('animationend', showMarker, this);
|
this.on('animationend', showMarker, this);
|
||||||
layer.__parent.zoomToBounds();
|
layer.__parent.zoomToBounds();
|
||||||
|
|
||||||
if (moveStart) {
|
|
||||||
//Never started moving, must already be there, probably need clustering however
|
|
||||||
showMarker.call(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -594,7 +604,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
//Actually add our markers to the map:
|
//Actually add our markers to the map:
|
||||||
l = this._needsClustering;
|
l = this._needsClustering;
|
||||||
this._needsClustering = [];
|
this._needsClustering = [];
|
||||||
this.addLayers(l);
|
this.addLayers(l, true);
|
||||||
},
|
},
|
||||||
|
|
||||||
//Overrides FeatureGroup.onRemove
|
//Overrides FeatureGroup.onRemove
|
||||||
@@ -648,33 +658,57 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
_removeFromGridUnclustered: function (marker, z) {
|
_removeFromGridUnclustered: function (marker, z) {
|
||||||
var map = this._map,
|
var map = this._map,
|
||||||
gridUnclustered = this._gridUnclustered;
|
gridUnclustered = this._gridUnclustered,
|
||||||
|
minZoom = this._map.getMinZoom();
|
||||||
|
|
||||||
for (; z >= 0; z--) {
|
for (; z >= minZoom; z--) {
|
||||||
if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {
|
if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_childMarkerMoved: function (e) {
|
_childMarkerDragStart: function (e) {
|
||||||
if (!this._ignoreMove) {
|
e.target.__dragStart = e.target._latlng;
|
||||||
e.target._latlng = e.oldLatLng;
|
},
|
||||||
this.removeLayer(e.target);
|
|
||||||
|
|
||||||
e.target._latlng = e.latlng;
|
_childMarkerMoved: function (e) {
|
||||||
this.addLayer(e.target);
|
if (!this._ignoreMove && !e.target.__dragStart) {
|
||||||
|
var isPopupOpen = e.target._popup && e.target._popup.isOpen();
|
||||||
|
|
||||||
|
this._moveChild(e.target, e.oldLatLng, e.latlng);
|
||||||
|
|
||||||
|
if (isPopupOpen) {
|
||||||
|
e.target.openPopup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_moveChild: function (layer, from, to) {
|
||||||
|
layer._latlng = from;
|
||||||
|
this.removeLayer(layer);
|
||||||
|
|
||||||
|
layer._latlng = to;
|
||||||
|
this.addLayer(layer);
|
||||||
|
},
|
||||||
|
|
||||||
|
_childMarkerDragEnd: function (e) {
|
||||||
|
if (e.target.__dragStart) {
|
||||||
|
this._moveChild(e.target, e.target.__dragStart, e.target._latlng);
|
||||||
|
}
|
||||||
|
delete e.target.__dragStart;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
//Internal function for removing a marker from everything.
|
//Internal function for removing a marker from everything.
|
||||||
//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)
|
//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)
|
||||||
_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {
|
_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {
|
||||||
var gridClusters = this._gridClusters,
|
var gridClusters = this._gridClusters,
|
||||||
gridUnclustered = this._gridUnclustered,
|
gridUnclustered = this._gridUnclustered,
|
||||||
fg = this._featureGroup,
|
fg = this._featureGroup,
|
||||||
map = this._map;
|
map = this._map,
|
||||||
|
minZoom = this._map.getMinZoom();
|
||||||
|
|
||||||
//Remove the marker from distance clusters it might be in
|
//Remove the marker from distance clusters it might be in
|
||||||
if (removeFromDistanceGrid) {
|
if (removeFromDistanceGrid) {
|
||||||
@@ -693,7 +727,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
cluster._childCount--;
|
cluster._childCount--;
|
||||||
cluster._boundsNeedUpdate = true;
|
cluster._boundsNeedUpdate = true;
|
||||||
|
|
||||||
if (cluster._zoom < 0) {
|
if (cluster._zoom < minZoom) {
|
||||||
//Top level, do nothing
|
//Top level, do nothing
|
||||||
break;
|
break;
|
||||||
} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required
|
} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required
|
||||||
@@ -876,6 +910,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
|
|
||||||
_generateInitialClusters: function () {
|
_generateInitialClusters: function () {
|
||||||
var maxZoom = this._map.getMaxZoom(),
|
var maxZoom = this._map.getMaxZoom(),
|
||||||
|
minZoom = this._map.getMinZoom(),
|
||||||
radius = this.options.maxClusterRadius,
|
radius = this.options.maxClusterRadius,
|
||||||
radiusFn = radius;
|
radiusFn = radius;
|
||||||
|
|
||||||
@@ -894,29 +929,30 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
this._gridUnclustered = {};
|
this._gridUnclustered = {};
|
||||||
|
|
||||||
//Set up DistanceGrids for each zoom
|
//Set up DistanceGrids for each zoom
|
||||||
for (var zoom = maxZoom; zoom >= 0; zoom--) {
|
for (var zoom = maxZoom; zoom >= minZoom; zoom--) {
|
||||||
this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));
|
this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));
|
||||||
this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));
|
this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Instantiate the appropriate L.MarkerCluster class (animated or not).
|
// Instantiate the appropriate L.MarkerCluster class (animated or not).
|
||||||
this._topClusterLevel = new this._markerCluster(this, -1);
|
this._topClusterLevel = new this._markerCluster(this, minZoom - 1);
|
||||||
},
|
},
|
||||||
|
|
||||||
//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)
|
//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)
|
||||||
_addLayer: function (layer, zoom) {
|
_addLayer: function (layer, zoom) {
|
||||||
var gridClusters = this._gridClusters,
|
var gridClusters = this._gridClusters,
|
||||||
gridUnclustered = this._gridUnclustered,
|
gridUnclustered = this._gridUnclustered,
|
||||||
|
minZoom = this._map.getMinZoom(),
|
||||||
markerPoint, z;
|
markerPoint, z;
|
||||||
|
|
||||||
if (this.options.singleMarkerMode) {
|
if (this.options.singleMarkerMode) {
|
||||||
this._overrideMarkerIcon(layer);
|
this._overrideMarkerIcon(layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
layer.on('move', this._childMarkerMoved, this);
|
layer.on(this._childMarkerEventHandlers, this);
|
||||||
|
|
||||||
//Find the lowest zoom level to slot this one in
|
//Find the lowest zoom level to slot this one in
|
||||||
for (; zoom >= 0; zoom--) {
|
for (; zoom >= minZoom; zoom--) {
|
||||||
markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position
|
markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position
|
||||||
|
|
||||||
//Try find a cluster close by
|
//Try find a cluster close by
|
||||||
@@ -1156,13 +1192,14 @@ L.MarkerClusterGroup.include({
|
|||||||
|
|
||||||
_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
|
_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
|
||||||
var bounds = this._getExpandedVisibleBounds(),
|
var bounds = this._getExpandedVisibleBounds(),
|
||||||
fg = this._featureGroup,
|
fg = this._featureGroup,
|
||||||
|
minZoom = this._map.getMinZoom(),
|
||||||
i;
|
i;
|
||||||
|
|
||||||
this._ignoreMove = true;
|
this._ignoreMove = true;
|
||||||
|
|
||||||
//Add all children of current clusters to map and remove those clusters from map
|
//Add all children of current clusters to map and remove those clusters from map
|
||||||
this._topClusterLevel._recursively(bounds, previousZoomLevel, 0, function (c) {
|
this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
|
||||||
var startPos = c._latlng,
|
var startPos = c._latlng,
|
||||||
markers = c._markers,
|
markers = c._markers,
|
||||||
m;
|
m;
|
||||||
@@ -1212,7 +1249,7 @@ L.MarkerClusterGroup.include({
|
|||||||
//Remove the old clusters and close the zoom animation
|
//Remove the old clusters and close the zoom animation
|
||||||
this._enqueue(function () {
|
this._enqueue(function () {
|
||||||
//update the positions of the just added clusters/markers
|
//update the positions of the just added clusters/markers
|
||||||
this._topClusterLevel._recursively(bounds, previousZoomLevel, 0, function (c) {
|
this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
|
||||||
fg.removeLayer(c);
|
fg.removeLayer(c);
|
||||||
c.clusterShow();
|
c.clusterShow();
|
||||||
});
|
});
|
||||||
@@ -1264,7 +1301,8 @@ L.MarkerClusterGroup.include({
|
|||||||
|
|
||||||
// Private methods for animated versions.
|
// Private methods for animated versions.
|
||||||
_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {
|
_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {
|
||||||
var bounds = this._getExpandedVisibleBounds();
|
var bounds = this._getExpandedVisibleBounds(),
|
||||||
|
minZoom = this._map.getMinZoom();
|
||||||
|
|
||||||
//Animate all of the markers in the clusters to move to their cluster center point
|
//Animate all of the markers in the clusters to move to their cluster center point
|
||||||
cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, previousZoomLevel + 1, newZoomLevel);
|
cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, previousZoomLevel + 1, newZoomLevel);
|
||||||
@@ -1290,7 +1328,7 @@ L.MarkerClusterGroup.include({
|
|||||||
m.clusterShow();
|
m.clusterShow();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cluster._recursively(bounds, newZoomLevel, 0, function (c) {
|
cluster._recursively(bounds, newZoomLevel, minZoom, function (c) {
|
||||||
c._recursivelyRemoveChildrenFromMap(bounds, previousZoomLevel + 1);
|
c._recursivelyRemoveChildrenFromMap(bounds, previousZoomLevel + 1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1536,7 +1574,7 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {
|
_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {
|
||||||
this._recursively(bounds, 0, maxZoom - 1,
|
this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1,
|
||||||
function (c) {
|
function (c) {
|
||||||
var markers = c._markers,
|
var markers = c._markers,
|
||||||
i, m;
|
i, m;
|
||||||
@@ -1565,7 +1603,7 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, previousZoomLevel, newZoomLevel) {
|
_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, previousZoomLevel, newZoomLevel) {
|
||||||
this._recursively(bounds, newZoomLevel, 0,
|
this._recursively(bounds, newZoomLevel, this._group._map.getMinZoom(),
|
||||||
function (c) {
|
function (c) {
|
||||||
c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);
|
c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);
|
||||||
|
|
||||||
@@ -1584,13 +1622,13 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_recursivelyBecomeVisible: function (bounds, zoomLevel) {
|
_recursivelyBecomeVisible: function (bounds, zoomLevel) {
|
||||||
this._recursively(bounds, 0, zoomLevel, null, function (c) {
|
this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {
|
||||||
c.clusterShow();
|
c.clusterShow();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {
|
_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {
|
||||||
this._recursively(bounds, -1, zoomLevel,
|
this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel,
|
||||||
function (c) {
|
function (c) {
|
||||||
if (zoomLevel === c._zoom) {
|
if (zoomLevel === c._zoom) {
|
||||||
return;
|
return;
|
||||||
@@ -1654,7 +1692,7 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
//exceptBounds: If set, don't remove any markers/clusters in it
|
//exceptBounds: If set, don't remove any markers/clusters in it
|
||||||
_recursivelyRemoveChildrenFromMap: function (previousBounds, zoomLevel, exceptBounds) {
|
_recursivelyRemoveChildrenFromMap: function (previousBounds, zoomLevel, exceptBounds) {
|
||||||
var m, i;
|
var m, i;
|
||||||
this._recursively(previousBounds, -1, zoomLevel - 1,
|
this._recursively(previousBounds, this._group._map.getMinZoom() - 1, zoomLevel - 1,
|
||||||
function (c) {
|
function (c) {
|
||||||
//Remove markers at every level
|
//Remove markers at every level
|
||||||
for (i = c._markers.length - 1; i >= 0; i--) {
|
for (i = c._markers.length - 1; i >= 0; i--) {
|
||||||
@@ -2336,6 +2374,9 @@ L.MarkerCluster.include({
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll
|
||||||
|
m.closePopup();
|
||||||
|
|
||||||
//Fix up the location to the real one
|
//Fix up the location to the real one
|
||||||
m.setLatLng(m._preSpiderfyLatlng);
|
m.setLatLng(m._preSpiderfyLatlng);
|
||||||
delete m._preSpiderfyLatlng;
|
delete m._preSpiderfyLatlng;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "leaflet.markercluster",
|
"name": "leaflet.markercluster",
|
||||||
"repository": "https://github.com/Leaflet/Leaflet.markercluster",
|
"repository": "https://github.com/Leaflet/Leaflet.markercluster",
|
||||||
"version": "1.0.0",
|
"version": "1.0.2",
|
||||||
"description": "Provides Beautiful Animated Marker Clustering functionality for Leaflet",
|
"description": "Provides Beautiful Animated Marker Clustering functionality for Leaflet",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"jshint": "~2.1.3",
|
"jshint": "~2.1.3",
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"uglify-js": "~2.3.6",
|
"uglify-js": "~2.3.6",
|
||||||
"jake": "~0.5.16",
|
"jake": "~0.5.16",
|
||||||
"magic-string": "^0.7.0",
|
"magic-string": "^0.7.0",
|
||||||
"leaflet": "~1.0.0-rc.1"
|
"leaflet": "~1.0.3"
|
||||||
},
|
},
|
||||||
"main": "dist/leaflet.markercluster.js",
|
"main": "dist/leaflet.markercluster.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ $GLOBALS['LEAFLET_LIBRARIES']['leaflet-providers'] = array
|
|||||||
$GLOBALS['LEAFLET_LIBRARIES']['leaflet-markercluster'] = array
|
$GLOBALS['LEAFLET_LIBRARIES']['leaflet-markercluster'] = array
|
||||||
(
|
(
|
||||||
'name' => 'Leaflet.markercluster',
|
'name' => 'Leaflet.markercluster',
|
||||||
'version' => '1.0.0',
|
'version' => '1.0.2',
|
||||||
'license' => '<a href="https://github.com/Leaflet/Leaflet.markercluster/blob/master/MIT-LICENCE.txt" target="_blank">MIT</a>',
|
'license' => '<a href="https://github.com/Leaflet/Leaflet.markercluster/blob/master/MIT-LICENCE.txt" target="_blank">MIT</a>',
|
||||||
'homepage' => 'https://github.com/Leaflet/Leaflet.markercluster',
|
'homepage' => 'https://github.com/Leaflet/Leaflet.markercluster',
|
||||||
'css' => 'assets/leaflet/libs/leaflet-markercluster/MarkerCluster.css',
|
'css' => 'assets/leaflet/libs/leaflet-markercluster/MarkerCluster.css',
|
||||||
|
|||||||
Reference in New Issue
Block a user