esri-leaflet-cluster
Advanced tools
Comparing version 2.0.0 to 2.0.1
{ | ||
"name": "esri-leaflet-clustered-feature-layer", | ||
"main": "dist/esri-leaflet-clustered-feature-layer.js", | ||
"name": "esri-leaflet-cluster", | ||
"main": "dist/esri-leaflet-cluster.js", | ||
"dependencies": { | ||
"esri-leaflet": "^2.0.0", | ||
"leaflet": "^1.0.0-rc.3", | ||
"leaflet.markercluster": "git+https://github.com/Leaflet/Leaflet.markercluster.git#v1.0.0-rc.1" | ||
"leaflet": "^1.0.0", | ||
"leaflet.markercluster": "^1.0.0" | ||
}, | ||
@@ -9,0 +9,0 @@ "ignore": [ |
@@ -5,2 +5,8 @@ # Changelog | ||
## [2.0.1] | ||
### Changed | ||
* Updated dependencies ([#20](https://github.com/Esri/esri-leaflet-cluster/pull/20)) | ||
## [2.0.0] | ||
@@ -76,2 +82,3 @@ | ||
[unreleased]: https://github.com/Esri/esri-leaflet-clustered-feature-layer/compare/v2.0.0...HEAD | ||
[2.0.1]: https://github.com/Esri/esri-leaflet-clustered-feature-layer/compare/v2.0.0...v2.0.1 | ||
[2.0.0]: https://github.com/Esri/esri-leaflet-clustered-feature-layer/compare/v2.0.0-beta.1...v2.0.0 | ||
@@ -78,0 +85,0 @@ [2.0.0-beta.1]: https://github.com/Esri/esri-leaflet-clustered-feature-layer/compare/v1.0.2...v2.0.0-beta.1 |
@@ -1,3 +0,3 @@ | ||
/* esri-leaflet-cluster - v2.0.0 - Thu Aug 18 2016 17:12:43 GMT-0700 (PDT) | ||
* Copyright (c) 2016 Environmental Systems Research Institute, Inc. | ||
/* esri-leaflet-cluster - v2.0.1 - Thu Sep 26 2019 15:47:35 GMT-0500 (Central Daylight Time) | ||
* Copyright (c) 2019 Environmental Systems Research Institute, Inc. | ||
* Apache-2.0 */ | ||
@@ -7,180 +7,181 @@ (function (global, factory) { | ||
typeof define === 'function' && define.amd ? define(['exports', 'leaflet', 'esri-leaflet'], factory) : | ||
(factory((global.L = global.L || {}, global.L.esri = global.L.esri || {}, global.L.esri.Cluster = global.L.esri.Cluster || {}),global.L,global.L.esri)); | ||
}(this, function (exports,L,esriLeaflet) { 'use strict'; | ||
(factory((global.L = global.L || {}, global.L.esri = global.L.esri || {}, global.L.esri.Cluster = {}),global.L,global.L.esri)); | ||
}(this, (function (exports,L,esriLeaflet) { 'use strict'; | ||
L = 'default' in L ? L['default'] : L; | ||
L = L && L.hasOwnProperty('default') ? L['default'] : L; | ||
var version = "2.0.0"; | ||
var version = "2.0.1"; | ||
var FeatureLayer = esriLeaflet.FeatureManager.extend({ | ||
var FeatureLayer = esriLeaflet.FeatureManager.extend({ | ||
statics: { | ||
EVENTS: 'click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose', | ||
CLUSTEREVENTS: 'clusterclick clusterdblclick clustermouseover clustermouseout clustermousemove clustercontextmenu' | ||
}, | ||
statics: { | ||
EVENTS: 'click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose', | ||
CLUSTEREVENTS: 'clusterclick clusterdblclick clustermouseover clustermouseout clustermousemove clustercontextmenu' | ||
}, | ||
/** | ||
* Constructor | ||
*/ | ||
/** | ||
* Constructor | ||
*/ | ||
initialize: function (options) { | ||
esriLeaflet.FeatureManager.prototype.initialize.call(this, options); | ||
initialize: function (options) { | ||
esriLeaflet.FeatureManager.prototype.initialize.call(this, options); | ||
options = L.setOptions(this, options); | ||
options = L.setOptions(this, options); | ||
this._layers = {}; | ||
this._leafletIds = {}; | ||
this._layers = {}; | ||
this._leafletIds = {}; | ||
this.cluster = L.markerClusterGroup(options); | ||
this._key = 'c' + (Math.random() * 1e9).toString(36).replace('.', '_'); | ||
this.cluster = L.markerClusterGroup(options); | ||
this._key = 'c' + (Math.random() * 1e9).toString(36).replace('.', '_'); | ||
this.cluster.addEventParent(this); | ||
}, | ||
this.cluster.addEventParent(this); | ||
}, | ||
/** | ||
* Layer Interface | ||
*/ | ||
/** | ||
* Layer Interface | ||
*/ | ||
onAdd: function (map) { | ||
esriLeaflet.FeatureManager.prototype.onAdd.call(this, map); | ||
this._map.addLayer(this.cluster); | ||
}, | ||
onAdd: function (map) { | ||
esriLeaflet.FeatureManager.prototype.onAdd.call(this, map); | ||
this._map.addLayer(this.cluster); | ||
}, | ||
onRemove: function (map) { | ||
esriLeaflet.FeatureManager.prototype.onRemove.call(this, map); | ||
this._map.removeLayer(this.cluster); | ||
}, | ||
onRemove: function (map) { | ||
esriLeaflet.FeatureManager.prototype.onRemove.call(this, map); | ||
this._map.removeLayer(this.cluster); | ||
}, | ||
/** | ||
* Feature Management Methods | ||
*/ | ||
/** | ||
* Feature Management Methods | ||
*/ | ||
createLayers: function (features) { | ||
var markers = []; | ||
createLayers: function (features) { | ||
var markers = []; | ||
for (var i = features.length - 1; i >= 0; i--) { | ||
var geojson = features[i]; | ||
var layer = this._layers[geojson.id]; | ||
for (var i = features.length - 1; i >= 0; i--) { | ||
var geojson = features[i]; | ||
var layer = this._layers[geojson.id]; | ||
if (!layer) { | ||
var newLayer = L.GeoJSON.geometryToLayer(geojson, this.options); | ||
newLayer.feature = L.GeoJSON.asFeature(geojson); | ||
newLayer.defaultOptions = newLayer.options; | ||
newLayer._leaflet_id = this._key + '_' + geojson.id; | ||
if (!layer) { | ||
layer = L.GeoJSON.geometryToLayer(geojson, this.options); | ||
layer.feature = L.GeoJSON.asFeature(geojson); | ||
layer.defaultOptions = layer.options; | ||
layer._leaflet_id = this._key + '_' + geojson.id; | ||
this.resetStyle(newLayer.feature.id); | ||
this.resetStyle(layer.feature.id); | ||
// cache the layer | ||
this._layers[newLayer.feature.id] = newLayer; | ||
// cache the layer | ||
this._layers[layer.feature.id] = layer; | ||
this._leafletIds[newLayer._leaflet_id] = geojson.id; | ||
this._leafletIds[layer._leaflet_id] = geojson.id; | ||
if (this.options.onEachFeature) { | ||
this.options.onEachFeature(newLayer.feature, newLayer); | ||
} | ||
if (this.options.onEachFeature) { | ||
this.options.onEachFeature(layer.feature, layer); | ||
} | ||
this.fire('createfeature', { | ||
feature: newLayer.feature | ||
}); | ||
this.fire('createfeature', { | ||
feature: layer.feature | ||
}); | ||
} | ||
// add the layer if it is within the time bounds or our layer is not time enabled | ||
if (!this.options.timeField || (this.options.timeField && this._featureWithinTimeRange(geojson))) { | ||
markers.push(newLayer); | ||
} | ||
} | ||
} | ||
// add the layer if it is within the time bounds or our layer is not time enabled | ||
if (!this.options.timeField || (this.options.timeField && this._featureWithinTimeRange(geojson))) { | ||
markers.push(layer); | ||
} | ||
} | ||
if (markers.length) { | ||
this.cluster.addLayers(markers); | ||
} | ||
}, | ||
if (markers.length) { | ||
this.cluster.addLayers(markers); | ||
} | ||
}, | ||
addLayers: function (ids) { | ||
var layersToAdd = []; | ||
for (var i = ids.length - 1; i >= 0; i--) { | ||
var layer = this._layers[ids[i]]; | ||
this.fire('addfeature', { | ||
feature: layer.feature | ||
}); | ||
layersToAdd.push(layer); | ||
} | ||
this.cluster.addLayers(layersToAdd); | ||
}, | ||
addLayers: function (ids) { | ||
var layersToAdd = []; | ||
for (var i = ids.length - 1; i >= 0; i--) { | ||
var layer = this._layers[ids[i]]; | ||
this.fire('addfeature', { | ||
feature: layer.feature | ||
}); | ||
layersToAdd.push(layer); | ||
} | ||
this.cluster.addLayers(layersToAdd); | ||
}, | ||
removeLayers: function (ids, permanent) { | ||
var layersToRemove = []; | ||
for (var i = ids.length - 1; i >= 0; i--) { | ||
var id = ids[i]; | ||
var layer = this._layers[id]; | ||
this.fire('removefeature', { | ||
feature: layer.feature, | ||
permanent: permanent | ||
}); | ||
layersToRemove.push(layer); | ||
if (this._layers[id] && permanent) { | ||
delete this._layers[id]; | ||
} | ||
} | ||
this.cluster.removeLayers(layersToRemove); | ||
}, | ||
removeLayers: function (ids, permanent) { | ||
var layersToRemove = []; | ||
for (var i = ids.length - 1; i >= 0; i--) { | ||
var id = ids[i]; | ||
var layer = this._layers[id]; | ||
this.fire('removefeature', { | ||
feature: layer.feature, | ||
permanent: permanent | ||
}); | ||
layersToRemove.push(layer); | ||
if (this._layers[id] && permanent) { | ||
delete this._layers[id]; | ||
} | ||
} | ||
this.cluster.removeLayers(layersToRemove); | ||
}, | ||
/** | ||
* Styling Methods | ||
*/ | ||
/** | ||
* Styling Methods | ||
*/ | ||
resetStyle: function (id) { | ||
var layer = this._layers[id]; | ||
resetStyle: function (id) { | ||
var layer = this._layers[id]; | ||
if (layer) { | ||
layer.options = layer.defaultOptions; | ||
this.setFeatureStyle(layer.feature.id, this.options.style); | ||
} | ||
if (layer) { | ||
layer.options = layer.defaultOptions; | ||
this.setFeatureStyle(layer.feature.id, this.options.style); | ||
} | ||
return this; | ||
}, | ||
return this; | ||
}, | ||
setStyle: function (style) { | ||
this.eachFeature(function (layer) { | ||
this.setFeatureStyle(layer.feature.id, style); | ||
}, this); | ||
return this; | ||
}, | ||
setStyle: function (style) { | ||
this.eachFeature(function (layer) { | ||
this.setFeatureStyle(layer.feature.id, style); | ||
}, this); | ||
return this; | ||
}, | ||
setFeatureStyle: function (id, style) { | ||
var layer = this._layers[id]; | ||
setFeatureStyle: function (id, style) { | ||
var layer = this._layers[id]; | ||
if (typeof style === 'function') { | ||
style = style(layer.feature); | ||
} | ||
if (layer.setStyle) { | ||
layer.setStyle(style); | ||
} | ||
}, | ||
if (typeof style === 'function') { | ||
style = style(layer.feature); | ||
} | ||
if (layer.setStyle) { | ||
layer.setStyle(style); | ||
} | ||
}, | ||
/** | ||
* Utility Methods | ||
*/ | ||
/** | ||
* Utility Methods | ||
*/ | ||
eachFeature: function (fn, context) { | ||
for (var i in this._layers) { | ||
fn.call(context, this._layers[i]); | ||
} | ||
return this; | ||
}, | ||
eachFeature: function (fn, context) { | ||
for (var i in this._layers) { | ||
fn.call(context, this._layers[i]); | ||
} | ||
return this; | ||
}, | ||
getFeature: function (id) { | ||
return this._layers[id]; | ||
} | ||
}); | ||
getFeature: function (id) { | ||
return this._layers[id]; | ||
} | ||
}); | ||
function featureLayer (options) { | ||
return new FeatureLayer(options); | ||
} | ||
function featureLayer (options) { | ||
return new FeatureLayer(options); | ||
} | ||
exports.FeatureLayer = FeatureLayer; | ||
exports.featureLayer = featureLayer; | ||
exports['default'] = featureLayer; | ||
exports.VERSION = version; | ||
exports.FeatureLayer = FeatureLayer; | ||
exports.featureLayer = featureLayer; | ||
exports.default = featureLayer; | ||
exports.VERSION = version; | ||
})); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNyaS1sZWFmbGV0LWNsdXN0ZXItZGVidWcuanMiLCJzb3VyY2VzIjpbIi4uL3BhY2thZ2UuanNvbiIsIi4uL3NyYy9DbHVzdGVyZWRGZWF0dXJlTGF5ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsie1xuICBcIm5hbWVcIjogXCJlc3JpLWxlYWZsZXQtY2x1c3RlclwiLFxuICBcImRlc2NyaXB0aW9uXCI6IFwiRXNyaSBMZWFmbGV0IHBsdWdpbiBmb3IgdmlzdWFsaXppbmcgRmVhdHVyZSBMYXllcnMgYXMgY2x1c3RlcnMgd2l0aCBMLm1hcmtlcmNsdXN0ZXIuXCIsXG4gIFwidmVyc2lvblwiOiBcIjIuMC4wXCIsXG4gIFwiYXV0aG9yXCI6IFwiUGF0cmljayBBcmx0IDxwYXJsdEBlc3JpLmNvbT4gKGh0dHA6Ly9wYXRyaWNrYXJsdC5jb20pXCIsXG4gIFwiY29udHJpYnV0b3JzXCI6IFtcbiAgICBcIlBhdHJpY2sgQXJsdCA8cGFybHRAZXNyaS5jb20+IChodHRwOi8vcGF0cmlja2FybHQuY29tKVwiLFxuICAgIFwiSm9obiBHcmF2b2lzIDxqZ3Jhdm9pc0Blc3JpLmNvbT4gKGh0dHA6Ly9qb2huZ3Jhdm9pcy5jb20pXCJcbiAgXSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiZXNyaS1sZWFmbGV0XCI6IFwiXjIuMC4wXCIsXG4gICAgXCJsZWFmbGV0XCI6IFwiXjEuMC4wLXJjLjNcIixcbiAgICBcImxlYWZsZXQubWFya2VyY2x1c3RlclwiOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vTGVhZmxldC9MZWFmbGV0Lm1hcmtlcmNsdXN0ZXIuZ2l0I3YxLjAuMC1yYy4xXCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiY2hhaVwiOiBcIjIuMy4wXCIsXG4gICAgXCJnaC1yZWxlYXNlXCI6IFwiXjIuMC4wXCIsXG4gICAgXCJodHRwLXNlcnZlclwiOiBcIl4wLjguNVwiLFxuICAgIFwiaXNwYXJ0YVwiOiBcIl4zLjAuM1wiLFxuICAgIFwiaXN0YW5idWxcIjogXCJeMC40LjJcIixcbiAgICBcImthcm1hXCI6IFwiXjAuMTIuMjRcIixcbiAgICBcImthcm1hLWNoYWktc2lub25cIjogXCJeMC4xLjNcIixcbiAgICBcImthcm1hLWNvdmVyYWdlXCI6IFwiXjAuNS4zXCIsXG4gICAgXCJrYXJtYS1tb2NoYVwiOiBcIl4wLjEuMFwiLFxuICAgIFwia2FybWEtbW9jaGEtcmVwb3J0ZXJcIjogXCJeMC4yLjVcIixcbiAgICBcImthcm1hLXBoYW50b21qcy1sYXVuY2hlclwiOiBcIl4wLjEuNFwiLFxuICAgIFwia2FybWEtc291cmNlbWFwLWxvYWRlclwiOiBcIl4wLjMuNVwiLFxuICAgIFwibWtkaXJwXCI6IFwiXjAuNS4xXCIsXG4gICAgXCJub2RlLXNhc3NcIjogXCJeMy4yLjBcIixcbiAgICBcInBoYW50b21qc1wiOiBcIl4xLjkuMTdcIixcbiAgICBcInJvbGx1cFwiOiBcIl4wLjI1LjRcIixcbiAgICBcInJvbGx1cC1wbHVnaW4tanNvblwiOiBcIl4yLjAuMFwiLFxuICAgIFwicm9sbHVwLXBsdWdpbi1ub2RlLXJlc29sdmVcIjogXCJeMS40LjBcIixcbiAgICBcInJvbGx1cC1wbHVnaW4tdWdsaWZ5XCI6IFwiXjAuMy4xXCIsXG4gICAgXCJzZW1pc3RhbmRhcmRcIjogXCJeNy4wLjRcIixcbiAgICBcInNpbm9uXCI6IFwiXjEuMTEuMVwiLFxuICAgIFwic2lub24tY2hhaVwiOiBcIjIuNy4wXCIsXG4gICAgXCJzbmF6enlcIjogXCJeMi4wLjFcIixcbiAgICBcIndhdGNoXCI6IFwiXjAuMTcuMVwiXG4gIH0sXG4gIFwiaG9tZXBhZ2VcIjogXCJodHRwczovL2dpdGh1Yi5jb20vRXNyaS9lc3JpLWxlYWZsZXQtY2x1c3RlclwiLFxuICBcImpzbmV4dDptYWluXCI6IFwic3JjL0NsdXN0ZXJlZEZlYXR1cmVMYXllci5qc1wiLFxuICBcImpzcG1cIjoge1xuICAgIFwicmVnaXN0cnlcIjogXCJucG1cIixcbiAgICBcImZvcm1hdFwiOiBcImVzNlwiLFxuICAgIFwibWFpblwiOiBcInNyYy9DbHVzdGVyZWRGZWF0dXJlTGF5ZXIuanNcIlxuICB9LFxuICBcImtleXdvcmRzXCI6IFtcbiAgICBcImFyY2dpc1wiLFxuICAgIFwiZXNyaVwiLFxuICAgIFwiZXNyaSBsZWFmbGV0XCIsXG4gICAgXCJnaXNcIixcbiAgICBcImxlYWZsZXQgcGx1Z2luXCIsXG4gICAgXCJtYXBwaW5nXCJcbiAgXSxcbiAgXCJsaWNlbnNlXCI6IFwiQXBhY2hlLTIuMFwiLFxuICBcIm1haW5cIjogXCJkaXN0L2VzcmktbGVhZmxldC1jbHVzdGVyLWRlYnVnLmpzXCIsXG4gIFwicmVhZG1lRmlsZW5hbWVcIjogXCJSRUFETUUubWRcIixcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vRXNyaS9lc3JpLWxlYWZsZXQtY2x1c3Rlci5naXRcIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwicHJlYnVpbGRcIjogXCJta2RpcnAgZGlzdFwiLFxuICAgIFwiYnVpbGRcIjogXCJyb2xsdXAgLWMgcHJvZmlsZXMvZGVidWcuanMgJiByb2xsdXAgLWMgcHJvZmlsZXMvcHJvZHVjdGlvbi5qc1wiLFxuICAgIFwibGludFwiOiBcInNlbWlzdGFuZGFyZCBzcmMvKi5qcyB8IHNuYXp6eVwiLFxuICAgIFwicHJlcHVibGlzaFwiOiBcIm5wbSBydW4gYnVpbGRcIixcbiAgICBcInByZXRlc3RcIjogXCJucG0gcnVuIGJ1aWxkXCIsXG4gICAgXCJyZWxlYXNlXCI6IFwiLi9zY3JpcHRzL3JlbGVhc2Uuc2hcIixcbiAgICBcInN0YXJ0XCI6IFwid2F0Y2ggJ25wbSBydW4gYnVpbGQnIHNyYyAmIGh0dHAtc2VydmVyIC1wIDU2NzggLWMtMSAtb1wiLFxuICAgIFwidGVzdFwiOiBcIm5wbSBydW4gbGludCAmJiBrYXJtYSBzdGFydFwiXG4gIH1cbn0iLCJleHBvcnQge3ZlcnNpb24gYXMgVkVSU0lPTn0gZnJvbSAnLi4vcGFja2FnZS5qc29uJztcblxuaW1wb3J0IEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBGZWF0dXJlTWFuYWdlciB9IGZyb20gJ2VzcmktbGVhZmxldCc7XG5cbmV4cG9ydCB2YXIgRmVhdHVyZUxheWVyID0gRmVhdHVyZU1hbmFnZXIuZXh0ZW5kKHtcblxuICBzdGF0aWNzOiB7XG4gICAgRVZFTlRTOiAnY2xpY2sgZGJsY2xpY2sgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlbW92ZSBjb250ZXh0bWVudSBwb3B1cG9wZW4gcG9wdXBjbG9zZScsXG4gICAgQ0xVU1RFUkVWRU5UUzogJ2NsdXN0ZXJjbGljayBjbHVzdGVyZGJsY2xpY2sgY2x1c3Rlcm1vdXNlb3ZlciBjbHVzdGVybW91c2VvdXQgY2x1c3Rlcm1vdXNlbW92ZSBjbHVzdGVyY29udGV4dG1lbnUnXG4gIH0sXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqL1xuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgRmVhdHVyZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICAgIG9wdGlvbnMgPSBMLnNldE9wdGlvbnModGhpcywgb3B0aW9ucyk7XG5cbiAgICB0aGlzLl9sYXllcnMgPSB7fTtcbiAgICB0aGlzLl9sZWFmbGV0SWRzID0ge307XG5cbiAgICB0aGlzLmNsdXN0ZXIgPSBMLm1hcmtlckNsdXN0ZXJHcm91cChvcHRpb25zKTtcbiAgICB0aGlzLl9rZXkgPSAnYycgKyAoTWF0aC5yYW5kb20oKSAqIDFlOSkudG9TdHJpbmcoMzYpLnJlcGxhY2UoJy4nLCAnXycpO1xuXG4gICAgdGhpcy5jbHVzdGVyLmFkZEV2ZW50UGFyZW50KHRoaXMpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBMYXllciBJbnRlcmZhY2VcbiAgICovXG5cbiAgb25BZGQ6IGZ1bmN0aW9uIChtYXApIHtcbiAgICBGZWF0dXJlTWFuYWdlci5wcm90b3R5cGUub25BZGQuY2FsbCh0aGlzLCBtYXApO1xuICAgIHRoaXMuX21hcC5hZGRMYXllcih0aGlzLmNsdXN0ZXIpO1xuICB9LFxuXG4gIG9uUmVtb3ZlOiBmdW5jdGlvbiAobWFwKSB7XG4gICAgRmVhdHVyZU1hbmFnZXIucHJvdG90eXBlLm9uUmVtb3ZlLmNhbGwodGhpcywgbWFwKTtcbiAgICB0aGlzLl9tYXAucmVtb3ZlTGF5ZXIodGhpcy5jbHVzdGVyKTtcbiAgfSxcblxuICAvKipcbiAgICogRmVhdHVyZSBNYW5hZ2VtZW50IE1ldGhvZHNcbiAgICovXG5cbiAgY3JlYXRlTGF5ZXJzOiBmdW5jdGlvbiAoZmVhdHVyZXMpIHtcbiAgICB2YXIgbWFya2VycyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IGZlYXR1cmVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZ2VvanNvbiA9IGZlYXR1cmVzW2ldO1xuICAgICAgdmFyIGxheWVyID0gdGhpcy5fbGF5ZXJzW2dlb2pzb24uaWRdO1xuXG4gICAgICBpZiAoIWxheWVyKSB7XG4gICAgICAgIHZhciBuZXdMYXllciA9IEwuR2VvSlNPTi5nZW9tZXRyeVRvTGF5ZXIoZ2VvanNvbiwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgbmV3TGF5ZXIuZmVhdHVyZSA9IEwuR2VvSlNPTi5hc0ZlYXR1cmUoZ2VvanNvbik7XG4gICAgICAgIG5ld0xheWVyLmRlZmF1bHRPcHRpb25zID0gbmV3TGF5ZXIub3B0aW9ucztcbiAgICAgICAgbmV3TGF5ZXIuX2xlYWZsZXRfaWQgPSB0aGlzLl9rZXkgKyAnXycgKyBnZW9qc29uLmlkO1xuXG4gICAgICAgIHRoaXMucmVzZXRTdHlsZShuZXdMYXllci5mZWF0dXJlLmlkKTtcblxuICAgICAgICAvLyBjYWNoZSB0aGUgbGF5ZXJcbiAgICAgICAgdGhpcy5fbGF5ZXJzW25ld0xheWVyLmZlYXR1cmUuaWRdID0gbmV3TGF5ZXI7XG5cbiAgICAgICAgdGhpcy5fbGVhZmxldElkc1tuZXdMYXllci5fbGVhZmxldF9pZF0gPSBnZW9qc29uLmlkO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMub25FYWNoRmVhdHVyZSkge1xuICAgICAgICAgIHRoaXMub3B0aW9ucy5vbkVhY2hGZWF0dXJlKG5ld0xheWVyLmZlYXR1cmUsIG5ld0xheWVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlyZSgnY3JlYXRlZmVhdHVyZScsIHtcbiAgICAgICAgICBmZWF0dXJlOiBuZXdMYXllci5mZWF0dXJlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGFkZCB0aGUgbGF5ZXIgaWYgaXQgaXMgd2l0aGluIHRoZSB0aW1lIGJvdW5kcyBvciBvdXIgbGF5ZXIgaXMgbm90IHRpbWUgZW5hYmxlZFxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy50aW1lRmllbGQgfHwgKHRoaXMub3B0aW9ucy50aW1lRmllbGQgJiYgdGhpcy5fZmVhdHVyZVdpdGhpblRpbWVSYW5nZShnZW9qc29uKSkpIHtcbiAgICAgICAgICBtYXJrZXJzLnB1c2gobmV3TGF5ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hcmtlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNsdXN0ZXIuYWRkTGF5ZXJzKG1hcmtlcnMpO1xuICAgIH1cbiAgfSxcblxuICBhZGRMYXllcnM6IGZ1bmN0aW9uIChpZHMpIHtcbiAgICB2YXIgbGF5ZXJzVG9BZGQgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gaWRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgbGF5ZXIgPSB0aGlzLl9sYXllcnNbaWRzW2ldXTtcbiAgICAgIHRoaXMuZmlyZSgnYWRkZmVhdHVyZScsIHtcbiAgICAgICAgZmVhdHVyZTogbGF5ZXIuZmVhdHVyZVxuICAgICAgfSk7XG4gICAgICBsYXllcnNUb0FkZC5wdXNoKGxheWVyKTtcbiAgICB9XG4gICAgdGhpcy5jbHVzdGVyLmFkZExheWVycyhsYXllcnNUb0FkZCk7XG4gIH0sXG5cbiAgcmVtb3ZlTGF5ZXJzOiBmdW5jdGlvbiAoaWRzLCBwZXJtYW5lbnQpIHtcbiAgICB2YXIgbGF5ZXJzVG9SZW1vdmUgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gaWRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgaWQgPSBpZHNbaV07XG4gICAgICB2YXIgbGF5ZXIgPSB0aGlzLl9sYXllcnNbaWRdO1xuICAgICAgdGhpcy5maXJlKCdyZW1vdmVmZWF0dXJlJywge1xuICAgICAgICBmZWF0dXJlOiBsYXllci5mZWF0dXJlLFxuICAgICAgICBwZXJtYW5lbnQ6IHBlcm1hbmVudFxuICAgICAgfSk7XG4gICAgICBsYXllcnNUb1JlbW92ZS5wdXNoKGxheWVyKTtcbiAgICAgIGlmICh0aGlzLl9sYXllcnNbaWRdICYmIHBlcm1hbmVudCkge1xuICAgICAgICBkZWxldGUgdGhpcy5fbGF5ZXJzW2lkXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbHVzdGVyLnJlbW92ZUxheWVycyhsYXllcnNUb1JlbW92ZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFN0eWxpbmcgTWV0aG9kc1xuICAgKi9cblxuICByZXNldFN0eWxlOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgbGF5ZXIgPSB0aGlzLl9sYXllcnNbaWRdO1xuXG4gICAgaWYgKGxheWVyKSB7XG4gICAgICBsYXllci5vcHRpb25zID0gbGF5ZXIuZGVmYXVsdE9wdGlvbnM7XG4gICAgICB0aGlzLnNldEZlYXR1cmVTdHlsZShsYXllci5mZWF0dXJlLmlkLCB0aGlzLm9wdGlvbnMuc3R5bGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIHNldFN0eWxlOiBmdW5jdGlvbiAoc3R5bGUpIHtcbiAgICB0aGlzLmVhY2hGZWF0dXJlKGZ1bmN0aW9uIChsYXllcikge1xuICAgICAgdGhpcy5zZXRGZWF0dXJlU3R5bGUobGF5ZXIuZmVhdHVyZS5pZCwgc3R5bGUpO1xuICAgIH0sIHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIHNldEZlYXR1cmVTdHlsZTogZnVuY3Rpb24gKGlkLCBzdHlsZSkge1xuICAgIHZhciBsYXllciA9IHRoaXMuX2xheWVyc1tpZF07XG5cbiAgICBpZiAodHlwZW9mIHN0eWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBzdHlsZSA9IHN0eWxlKGxheWVyLmZlYXR1cmUpO1xuICAgIH1cbiAgICBpZiAobGF5ZXIuc2V0U3R5bGUpIHtcbiAgICAgIGxheWVyLnNldFN0eWxlKHN0eWxlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFV0aWxpdHkgTWV0aG9kc1xuICAgKi9cblxuICBlYWNoRmVhdHVyZTogZnVuY3Rpb24gKGZuLCBjb250ZXh0KSB7XG4gICAgZm9yICh2YXIgaSBpbiB0aGlzLl9sYXllcnMpIHtcbiAgICAgIGZuLmNhbGwoY29udGV4dCwgdGhpcy5fbGF5ZXJzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG5cbiAgZ2V0RmVhdHVyZTogZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xheWVyc1tpZF07XG4gIH1cbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZmVhdHVyZUxheWVyIChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgRmVhdHVyZUxheWVyKG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmZWF0dXJlTGF5ZXI7XG4iXSwibmFtZXMiOlsiRmVhdHVyZU1hbmFnZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Q0NLTyxJQUFJLFlBQVksR0FBR0EsMEJBQWMsQ0FBQyxNQUFNLENBQUM7O0FBRWhELENBQUEsRUFBRSxPQUFPLEVBQUU7QUFDWCxDQUFBLElBQUksTUFBTSxFQUFFLDhFQUE4RTtBQUMxRixDQUFBLElBQUksYUFBYSxFQUFFLG1HQUFtRztBQUN0SCxDQUFBLEdBQUc7O0FBRUgsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsRUFBRSxVQUFV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 | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
}))); |
@@ -1,5 +0,4 @@ | ||
/* esri-leaflet-cluster - v2.0.0 - Thu Aug 18 2016 17:12:43 GMT-0700 (PDT) | ||
* Copyright (c) 2016 Environmental Systems Research Institute, Inc. | ||
/* esri-leaflet-cluster - v2.0.1 - Thu Sep 26 2019 15:47:35 GMT-0500 (Central Daylight Time) | ||
* Copyright (c) 2019 Environmental Systems Research Institute, Inc. | ||
* Apache-2.0 */ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("leaflet"),require("esri-leaflet")):"function"==typeof define&&define.amd?define(["exports","leaflet","esri-leaflet"],t):t((e.L=e.L||{},e.L.esri=e.L.esri||{},e.L.esri.Cluster=e.L.esri.Cluster||{}),e.L,e.L.esri)}(this,function(e,t,r){"use strict";function s(e){return new a(e)}t="default"in t?t.default:t;var i="2.0.0",a=r.FeatureManager.extend({statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose",CLUSTEREVENTS:"clusterclick clusterdblclick clustermouseover clustermouseout clustermousemove clustercontextmenu"},initialize:function(e){r.FeatureManager.prototype.initialize.call(this,e),e=t.setOptions(this,e),this._layers={},this._leafletIds={},this.cluster=t.markerClusterGroup(e),this._key="c"+(1e9*Math.random()).toString(36).replace(".","_"),this.cluster.addEventParent(this)},onAdd:function(e){r.FeatureManager.prototype.onAdd.call(this,e),this._map.addLayer(this.cluster)},onRemove:function(e){r.FeatureManager.prototype.onRemove.call(this,e),this._map.removeLayer(this.cluster)},createLayers:function(e){for(var r=[],s=e.length-1;s>=0;s--){var i=e[s],a=this._layers[i.id];if(!a){var u=t.GeoJSON.geometryToLayer(i,this.options);u.feature=t.GeoJSON.asFeature(i),u.defaultOptions=u.options,u._leaflet_id=this._key+"_"+i.id,this.resetStyle(u.feature.id),this._layers[u.feature.id]=u,this._leafletIds[u._leaflet_id]=i.id,this.options.onEachFeature&&this.options.onEachFeature(u.feature,u),this.fire("createfeature",{feature:u.feature}),(!this.options.timeField||this.options.timeField&&this._featureWithinTimeRange(i))&&r.push(u)}}r.length&&this.cluster.addLayers(r)},addLayers:function(e){for(var t=[],r=e.length-1;r>=0;r--){var s=this._layers[e[r]];this.fire("addfeature",{feature:s.feature}),t.push(s)}this.cluster.addLayers(t)},removeLayers:function(e,t){for(var r=[],s=e.length-1;s>=0;s--){var i=e[s],a=this._layers[i];this.fire("removefeature",{feature:a.feature,permanent:t}),r.push(a),this._layers[i]&&t&&delete this._layers[i]}this.cluster.removeLayers(r)},resetStyle:function(e){var t=this._layers[e];return t&&(t.options=t.defaultOptions,this.setFeatureStyle(t.feature.id,this.options.style)),this},setStyle:function(e){return this.eachFeature(function(t){this.setFeatureStyle(t.feature.id,e)},this),this},setFeatureStyle:function(e,t){var r=this._layers[e];"function"==typeof t&&(t=t(r.feature)),r.setStyle&&r.setStyle(t)},eachFeature:function(e,t){for(var r in this._layers)e.call(t,this._layers[r]);return this},getFeature:function(e){return this._layers[e]}});e.FeatureLayer=a,e.featureLayer=s,e.default=s,e.VERSION=i}); | ||
//# sourceMappingURL=esri-leaflet-cluster.js.map | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("leaflet"),require("esri-leaflet")):"function"==typeof define&&define.amd?define(["exports","leaflet","esri-leaflet"],t):t((e.L=e.L||{},e.L.esri=e.L.esri||{},e.L.esri.Cluster={}),e.L,e.L.esri)}(this,function(e,t,r){"use strict";function s(e){return new i(e)}t=t&&t.hasOwnProperty("default")?t.default:t;var i=r.FeatureManager.extend({statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose",CLUSTEREVENTS:"clusterclick clusterdblclick clustermouseover clustermouseout clustermousemove clustercontextmenu"},initialize:function(e){r.FeatureManager.prototype.initialize.call(this,e),e=t.setOptions(this,e),this._layers={},this._leafletIds={},this.cluster=t.markerClusterGroup(e),this._key="c"+(1e9*Math.random()).toString(36).replace(".","_"),this.cluster.addEventParent(this)},onAdd:function(e){r.FeatureManager.prototype.onAdd.call(this,e),this._map.addLayer(this.cluster)},onRemove:function(e){r.FeatureManager.prototype.onRemove.call(this,e),this._map.removeLayer(this.cluster)},createLayers:function(e){for(var r=[],s=e.length-1;s>=0;s--){var i=e[s],a=this._layers[i.id];a||(a=t.GeoJSON.geometryToLayer(i,this.options),a.feature=t.GeoJSON.asFeature(i),a.defaultOptions=a.options,a._leaflet_id=this._key+"_"+i.id,this.resetStyle(a.feature.id),this._layers[a.feature.id]=a,this._leafletIds[a._leaflet_id]=i.id,this.options.onEachFeature&&this.options.onEachFeature(a.feature,a),this.fire("createfeature",{feature:a.feature})),(!this.options.timeField||this.options.timeField&&this._featureWithinTimeRange(i))&&r.push(a)}r.length&&this.cluster.addLayers(r)},addLayers:function(e){for(var t=[],r=e.length-1;r>=0;r--){var s=this._layers[e[r]];this.fire("addfeature",{feature:s.feature}),t.push(s)}this.cluster.addLayers(t)},removeLayers:function(e,t){for(var r=[],s=e.length-1;s>=0;s--){var i=e[s],a=this._layers[i];this.fire("removefeature",{feature:a.feature,permanent:t}),r.push(a),this._layers[i]&&t&&delete this._layers[i]}this.cluster.removeLayers(r)},resetStyle:function(e){var t=this._layers[e];return t&&(t.options=t.defaultOptions,this.setFeatureStyle(t.feature.id,this.options.style)),this},setStyle:function(e){return this.eachFeature(function(t){this.setFeatureStyle(t.feature.id,e)},this),this},setFeatureStyle:function(e,t){var r=this._layers[e];"function"==typeof t&&(t=t(r.feature)),r.setStyle&&r.setStyle(t)},eachFeature:function(e,t){for(var r in this._layers)e.call(t,this._layers[r]);return this},getFeature:function(e){return this._layers[e]}});e.FeatureLayer=i,e.featureLayer=s,e.default=s,e.VERSION="2.0.1",Object.defineProperty(e,"__esModule",{value:!0})}); |
// Karma configuration | ||
// Generated on Fri May 30 2014 15:44:45 GMT-0400 (EDT) | ||
module.exports = function(config) { | ||
module.exports = function (config) { | ||
config.set({ | ||
@@ -54,7 +54,7 @@ | ||
browsers: [ | ||
// 'Chrome', | ||
'Chrome' | ||
// 'ChromeCanary', | ||
// 'Firefox', | ||
// 'Safari', | ||
'PhantomJS' | ||
// 'PhantomJS' | ||
], | ||
@@ -68,4 +68,4 @@ | ||
coverageReporter: { | ||
reporters:[ | ||
{type: 'html', dir:'coverage/'}, | ||
reporters: [ | ||
{type: 'html', dir: 'coverage/'}, | ||
{type: 'text'} | ||
@@ -72,0 +72,0 @@ ] |
{ | ||
"name": "esri-leaflet-cluster", | ||
"description": "Esri Leaflet plugin for visualizing Feature Layers as clusters with L.markercluster.", | ||
"version": "2.0.0", | ||
"version": "2.0.1", | ||
"author": "Patrick Arlt <parlt@esri.com> (http://patrickarlt.com)", | ||
@@ -12,37 +12,37 @@ "contributors": [ | ||
"esri-leaflet": "^2.0.0", | ||
"leaflet": "^1.0.0-rc.3", | ||
"leaflet.markercluster": "git+https://github.com/Leaflet/Leaflet.markercluster.git#v1.0.0-rc.1" | ||
"leaflet": "^1.0.0", | ||
"leaflet.markercluster": "^1.0.0" | ||
}, | ||
"devDependencies": { | ||
"chai": "2.3.0", | ||
"gh-release": "^2.0.0", | ||
"http-server": "^0.8.5", | ||
"isparta": "^3.0.3", | ||
"gh-release": "^3.2.1", | ||
"http-server": "^0.11.1", | ||
"isparta": "^4.0.0", | ||
"istanbul": "^0.4.2", | ||
"karma": "^0.12.24", | ||
"karma": "^2.0.2", | ||
"karma-chai-sinon": "^0.1.3", | ||
"karma-chrome-launcher": "^2.2.0", | ||
"karma-coverage": "^0.5.3", | ||
"karma-mocha": "^0.1.0", | ||
"karma-mocha-reporter": "^0.2.5", | ||
"karma-phantomjs-launcher": "^0.1.4", | ||
"karma-sourcemap-loader": "^0.3.5", | ||
"mkdirp": "^0.5.1", | ||
"node-sass": "^3.2.0", | ||
"phantomjs": "^1.9.17", | ||
"rollup": "^0.25.4", | ||
"mocha": "^5.2.0", | ||
"node-sass": "sass/node-sass#v4.7.0", | ||
"rollup": "^0.56.5", | ||
"rollup-plugin-json": "^2.0.0", | ||
"rollup-plugin-node-resolve": "^1.4.0", | ||
"rollup-plugin-uglify": "^0.3.1", | ||
"semistandard": "^7.0.4", | ||
"semistandard": "^11.0.0", | ||
"sinon": "^1.11.1", | ||
"sinon-chai": "2.7.0", | ||
"snazzy": "^2.0.1", | ||
"snazzy": "^7.1.1", | ||
"watch": "^0.17.1" | ||
}, | ||
"homepage": "https://github.com/Esri/esri-leaflet-cluster", | ||
"jsnext:main": "src/ClusteredFeatureLayer.js", | ||
"jsnext:main": "src/ClusterFeatureLayer.js", | ||
"jspm": { | ||
"registry": "npm", | ||
"format": "es6", | ||
"main": "src/ClusteredFeatureLayer.js" | ||
"main": "src/ClusterFeatureLayer.js" | ||
}, | ||
@@ -59,2 +59,3 @@ "keywords": [ | ||
"main": "dist/esri-leaflet-cluster-debug.js", | ||
"module": "src/ClusterFeatureLayer.js", | ||
"readmeFilename": "README.md", | ||
@@ -68,3 +69,3 @@ "repository": { | ||
"build": "rollup -c profiles/debug.js & rollup -c profiles/production.js", | ||
"lint": "semistandard src/*.js | snazzy", | ||
"lint": "semistandard | snazzy", | ||
"prepublish": "npm run build", | ||
@@ -75,3 +76,10 @@ "pretest": "npm run build", | ||
"test": "npm run lint && karma start" | ||
}, | ||
"semistandard": { | ||
"globals": [ | ||
"expect", | ||
"L", | ||
"sinon" | ||
] | ||
} | ||
} | ||
} |
import config from '../node_modules/esri-leaflet/profiles/base.js'; | ||
config.entry = 'src/ClusteredFeatureLayer.js'; | ||
config.moduleName = 'L.esri.Cluster'; | ||
config.input = 'src/ClusterFeatureLayer.js'; | ||
config.output.name = 'L.esri.Cluster'; | ||
export default config; | ||
export default config; |
import config from './base.js'; | ||
config.dest = 'dist/esri-leaflet-cluster-debug.js'; | ||
config.sourceMap = 'inline'; | ||
config.output.file = 'dist/esri-leaflet-cluster-debug.js'; | ||
export default config; | ||
export default config; |
import uglify from 'rollup-plugin-uglify'; | ||
import config from './base.js' | ||
import config from './base.js'; | ||
config.dest = 'dist/esri-leaflet-cluster.js'; | ||
config.sourceMap = 'dist/esri-leaflet-cluster.js.map'; | ||
config.output.file = 'dist/esri-leaflet-cluster.js'; | ||
// use a Regex to preserve copyright text | ||
config.plugins.push(uglify({ output: { comments: /Institute, Inc/} })); | ||
config.plugins.push(uglify({ output: { comments: /Institute, Inc/ } })); | ||
export default config; | ||
export default config; |
@@ -14,3 +14,3 @@ # Esri Leaflet Cluster | ||
<a href="http://esri.github.io/esri-leaflet/examples/clustering-feature-layers.html"> | ||
<img src="https://github.com/Esri/esri-leaflet-cluster/raw/master/esri-leaflet-clustered-feature-layer.jpg" alt="Demo"> | ||
<img src="https://github.com/Esri/esri-leaflet-cluster/raw/master/cluster-example.jpg" alt="Demo"> | ||
</a> | ||
@@ -26,18 +26,23 @@ | ||
<!-- Load Leaflet from CDN--> | ||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/leaflet/1.0.0-rc.3/leaflet.css" /> | ||
<script src="https://cdn.jsdelivr.net/leaflet/1.0.0-rc.3/leaflet-src.js"></script> | ||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.1.0/dist/leaflet.css" | ||
integrity="sha512-wcw6ts8Anuw10Mzh9Ytw4pylW8+NAD4ch3lqm9lzAsTxg0GFeJgoAtxuCLREZSC5lUXdVyo/7yfsqFjQ4S+aKw==" | ||
crossorigin=""/> | ||
<script src="https://unpkg.com/leaflet@1.1.0/dist/leaflet.js" | ||
integrity="sha512-mNqn2Wg7tSToJhvHcqfzLMU6J4mkOImSPTxVZAdo+lcPlk+GhZmYgACEe0x35K7YzW1zJ7XyJV/TT1MrdXvMcA==" | ||
crossorigin=""></script> | ||
<!-- Load Esri Leaflet from CDN --> | ||
<script src="http://cdn.jsdelivr.net/leaflet.esri/2.0.2/esri-leaflet.js"></script> | ||
<script src="https://unpkg.com/esri-leaflet@2.1.0/dist/esri-leaflet.js" | ||
integrity="sha512-Tojl3UMd387f6DdAJlo+fKfJZiP55fYT+6Y58yKbHydnueOdSFOxrgLPuUxm7VW1szEt3hZVwv3V2sSUCuT35w==" | ||
crossorigin=""></script> | ||
<!-- Include Leaflet.markercluster via rawgit.com | ||
in production you'd be better off hosting these libraries yourself --> | ||
<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/Leaflet/Leaflet.markercluster/v1.0.0-rc.1/dist/MarkerCluster.Default.css"> | ||
<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/Leaflet/Leaflet.markercluster/v1.0.0-rc.1/dist/MarkerCluster.css"> | ||
<script src="https://cdn.rawgit.com/Leaflet/Leaflet.markercluster/v1.0.0-rc.1/dist/leaflet.markercluster.js"></script> | ||
<link rel="stylesheet" type="text/css" href="https://unpkg.com/leaflet.markercluster@1.0.4/dist/MarkerCluster.Default.css"> | ||
<link rel="stylesheet" type="text/css" href="https://unpkg.com/leaflet.markercluster@1.0.4/dist/MarkerCluster.css"> | ||
<script src="https://unpkg.com/leaflet.markercluster@1.0.4/dist/leaflet.markercluster.js"></script> | ||
<!-- Load Esri Leaflet Cluster from CDN --> | ||
<script src="https://unpkg.com/esri-leaflet-cluster@2.0.0/dist/esri-leaflet-cluster.js" | ||
integrity="sha512-mhpdD3igvv7A/84hueuHzV0NIKFHmp2IvWnY5tIdtAHkHF36yySdstEVI11JZCmSY4TCvOkgEoW+zcV/rUfo0A==" | ||
crossorigin=""></script> | ||
<!-- Load Clustered Feature Layer from CDN --> | ||
<script src="https://cdn.jsdelivr.net/leaflet.esri.cluster/2.0.0/esri-leaflet-cluster.js"></script> | ||
<style> | ||
@@ -67,17 +72,13 @@ body {margin:0;padding:0;} | ||
A full [API Reference](http://esri.github.io/esri-leaflet/api-reference/) and plenty of [sample code](http://esri.github.io/esri-leaflet/examples/) can be found at the [Esri Leaflet](http://esri.github.io/esri-leaflet/) website. | ||
A full [API Reference](http://esri.github.io/esri-leaflet/api-reference/layers/cluster-feature-layer.html) and examples can be found on the [Esri Leaflet](http://esri.github.io/esri-leaflet/) website. | ||
### Development Roadmap | ||
If you are interested in contributing to Esri Leaflet or are interetsed in seeing what is coming up next checkout the [development roadmap](https://github.com/Esri/esri-leaflet/wiki/Roadmap). | ||
### Development Instructions | ||
Make Sure you have the [Grunt CLI](http://gruntjs.com/getting-started) installed. | ||
If you'd like to inspect and modify the source of Esri Leaflet Cluster, follow the instructions below to set up a local development environment. | ||
1. [Fork and clone this repo](https://help.github.com/articles/fork-a-repo) | ||
2. `cd` into the `esri-leaflet` folder | ||
3. Install the dependencies with `npm install` | ||
4. run `grunt` from the command line. This will start watching the source files and running linting and testing commands. | ||
5. Open `debug/sample.html` which will load up a development environment. | ||
1. [Fork and clone Esri Leaflet Cluster](https://help.github.com/articles/fork-a-repo) | ||
2. `cd` into the `esri-leaflet-cluster` folder | ||
3. Install the [`package.json`](https://github.com/Esri/esri-leaflet/blob/master/package.json#L14-L49) dependencies by running `npm install` | ||
4. Run `npm start` from the command line. This will compile minified source in a brand new `dist` directory, launch a tiny webserver and begin watching the raw source for changes. | ||
5. Run `npm test` to make sure you haven't introduced a new 'feature' accidentally. | ||
6. Make your changes and create a [pull request](https://help.github.com/articles/creating-a-pull-request) | ||
@@ -87,3 +88,3 @@ | ||
* version [1.0.2](https://github.com/Esri/esri-leaflet-clustered-feature-layer/releases/tag/v1.0.2) (available on [CDN](https://cdn.jsdelivr.net/leaflet.esri.clustered-feature-layer/1.0.2/esri-leaflet-clustered-feature-layer.js)) can be used in apps alongside: | ||
* version [1.0.2](https://github.com/Esri/esri-leaflet-cluster/releases/tag/v1.0.2) (available on [CDN](https://cdn.jsdelivr.net/leaflet.esri.clustered-feature-layer/1.0.2/esri-leaflet-clustered-feature-layer.js)) can be used in apps alongside: | ||
* [Leaflet](http://leafletjs.com) version `0.7.x`. | ||
@@ -93,6 +94,6 @@ * Esri Leaflet version `1.x` | ||
* version [2.0.0-beta.1](https://github.com/Esri/esri-leaflet-clustered-feature-layer/releases/tag/v2.0.0-beta.1) (available on [CDN](https://cdn.jsdelivr.net/leaflet.esri.clustered-feature-layer/2.0.0-beta.1/esri-leaflet-clustered-feature-layer.js)) can be used in apps alongside: | ||
* [Leaflet](http://leafletjs.com) version `1.0.0-rc.3`. | ||
* version [2.0.0](https://github.com/Esri/esri-leaflet-cluster/releases/tag/v2.0.0) (available on [CDN](https://unpkg.com/esri-leaflet-cluster@2.0.0)) can be used in apps alongside: | ||
* [Leaflet](http://leafletjs.com) version `1.x`. | ||
* Esri Leaflet version `2.x` | ||
* [Leaflet.markercluster](https://github.com/Leaflet/Leaflet.markercluster) version `1.0.0-rc.1` | ||
* [Leaflet.markercluster](https://github.com/Leaflet/Leaflet.markercluster) version `1.x` | ||
@@ -109,5 +110,5 @@ ### Resources | ||
Find a bug or want to request a new feature? Please let us know by submitting an [issue](https://github.com/Esri/esri-leaflet-clustered-feature-layer/issues). | ||
Find a bug or want to request a new feature? Please let us know by submitting an [issue](https://github.com/Esri/esri-leaflet-cluster/issues). | ||
Please take a look at [previous issues on Esri Leaflet](https://github.com/Esri/esri-leaflet/issues?labels=FAQ&milestone=&page=1&state=closed) and [previous issues on Esri Leaflet Clustered Feature Layer](https://github.com/Esri/esri-leaflet-clustered-feature-layer/issues?labels=FAQ&milestone=&page=1&state=closed)that resolve common problems. | ||
Please take a look at [previous Esri Leaflet issues](https://github.com/Esri/esri-leaflet/issues?labels=FAQ&milestone=&page=1&state=closed) and [previous Esri Leaflet Cluster issues](https://github.com/Esri/esri-leaflet-cluster/issues?labels=FAQ&milestone=&page=1&state=closed)that resolve common problems. | ||
@@ -121,3 +122,3 @@ You can also post issues on the [GIS Stackexchange](http://gis.stackexchange.com/questions/ask?tags=esri-leaflet,leaflet) an/or the [Esri Leaflet place](https://geonet.esri.com/discussion/create.jspa?sr=pmenu&containerID=1841&containerType=700&tags=esri-leaflet,leaflet) on GeoNet. | ||
### Licensing | ||
Copyright 2016 Esri | ||
Copyright 2017 Esri | ||
@@ -136,5 +137,2 @@ Licensed under the Apache License, Version 2.0 (the "License"); | ||
A copy of the license is available in the repository's [LICENSE](./LICENSE) file. | ||
[](Esri Tags: ArcGIS Web Mapping Leaflet) | ||
[](Esri Language: JavaScript) | ||
A copy of the license is available in the repository's [LICENSE](./LICENSE) file. |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Git dependency
Supply chain riskContains a dependency which resolves to a remote git URL. Dependencies fetched from git URLs are not immutable and can be used to inject untrusted code or reduce the likelihood of a reproducible install.
Found 1 instance in 1 package
524
0
128809
18
130
1
+ Addedleaflet.markercluster@1.5.3(transitive)
Updatedleaflet@^1.0.0
Updatedleaflet.markercluster@^1.0.0