All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
3.0.13 - 2024-10-25
- Removed usage of
toLatLngBounds
to improve usage of Esri Leaflet with ESM CDNs. (#1394)
- Updated dependencies (#1382)
3.0.12 - 2023-11-27
- Added
removeEsriAttribution
to be exported (#1379) - Fixed issue in
TiledMapLayer
whenLOD
is0
(#1381) - Fixed apostrophe URL encoding (#1377)
3.0.11 - 2023-08-07
- Fixed issue with attribution prefix consistency (#1366)
3.0.10 - 2023-01-17
- Fixed issue with popups when using Leaflet v1.9.3 (#1350)
- Updated dependencies (#1351)
3.0.9 - 2022-12-09
- Fixed performance issue with refreshing features (#1346)
3.0.8 - 2022-04-08
- Fixed warning in Leaflet v1.8.0 (#1325)
- Updated development tooling:
3.0.7 - 2022-02-24
- Include
siteData.json
in NPM release (#1317).
3.0.6 - 2022-02-23
- Include
siteData.json
in NPM release (414e060d44bf2be30baaa4fe2e94021c7a1c99a1).
3.0.5 - 2022-02-23
siteInfo.json
generation as part of the release (#1313)
FeatureLayer.refresh()
fixed for layers wheresimplifyFactor
is not set (#1304)
- Updated dependencies (#1314)
3.0.4 - 2021-12-06
- Feature Layer fixes:
addFeature
event fixed andeachActiveFeature
should now respect minZoom/maxZoom (#1301)
3.0.3 - 2021-09-24
- Added a deprecation warning when using
L.esri.BasemapLayer
(info). This warning can be disabled by setting theignoreDeprecationWarning
option totrue
. (#1293). - Updated dependencies (#1276)
3.0.2 - 2021-05-24
3.0.1 - 2021-02-23
- Ensure that
TiledMapLayer
will complete itsonRemove
prototype logic after removing its attribution. (#1256)
3.0.0 - 2021-01-25
apikey
method on L.esri.Taskapikey
property on L.esri.FeatureLayer
2.5.3 - 2021-01-06
- Fix error (introduced in v2.5.2) that happens when the map attribution control is not present (🙏avinmathew🙏 #1252)
- REST calls will now use
inSR
instead ofinSr
(#1251)
2.5.2 - 2020-12-29
- When esri-leaflet layers are removed from the map, the attribution will be removed (#1248)
2.5.1 - 2020-10-04
- Support 'withCredentials' option (🙏luiscamachopt🙏 #1233)
- Support 'fetchAllFeatures' option (🙏francharbo🙏 #1229)
2.5.0 - 2020-08-06
- Fix Error on cellEnter (🙏francharbo🙏 #1204)
- Fix bugs with feature layer setWhere (#1211)
- MinZoom issue - do not clear _currentSnapshot when hiding the layer (#1212)
- ImageMapLayer - proxy support now works when
f:image
(#1221) - DynamicMapLayer - proxy support now works when
f:image
(#1220) - FeatureLayer issues when
refresh()
was called (#1224) - Issues when
addFeatures()
(orupdateFeatures()
) thensetWhere()
was called (#1226)
DynamicMapLayer
now defaults to usingformat: 'png32'
instead of'png24'
. (🙏pmacMaps🙏 #1202, #1187)- Reverted the functionality that allowed over-zooming with the Imagery basemap in certain areas of the world due to bugs that were caused by that change (#1223)
2.4.1 - 2020-05-19
- Fixed ES5 issue (#1201)
2.4.0 - 2020-04-22
- Updated
request
to be imported inBasemapLayer.js
rather than relying on globalL.esri
. (🙏danieloliveira117🙏 #1191)
- Updated
FeatureLayer
allowing queries to be consistently cached both on the server and on ArcGIS Online CDN. This should result in a decent performance boost for most use cases and in some cases (public, non-editable data) a significant performance boost. #1189. - use
@terraformer/arcgis
(instead of@esri/arcgis-to-geojson-utils
) to generate GeoJSON from older ArcGIS services #1194.
2.3.3 - 2020-01-29
- Ensure
DynamicMapLayer
can use both a token andf: 'image'
. (#1180)
2.3.2 - 2019-11-13
- Time filtering fix which adds a case for when a feature's time range contains the time range given in the to and from options for the layer. (🙏pjbiogit🙏 #1174)
2.3.1 - 2019-10-10
?undefined
issue when using DynamicMapLayer and Proxy (#1164)
- REST calls will now use
outSR
instead ofoutSr
(#1168)
2.3.0 - 2019-07-17
- Time filtering fix (🙏pjbiogit🙏 #1156)
- dynamically resample Esri World Imagery (🙏jgravois🙏 #1011)
- 'loading' event fired immediately before /export is called (🙏ogix🙏 #1146)
- warning if
setTimeRange()
is called without atimeField
(#1148)
2.2.4 - 2019-03-20
- ensure a CORS request is made to fetch dynamic attribution for Esri basemaps instead of a JSONP request. (🙏jubasse🙏 #1142)
- make sure webpack clients can access the ES source. (#1134)
- ensure
basemapLayer
honors a proxy if one is set. (🙏dangowans🙏 #1122) - resolve devDependency security vulnerabilities (🙏gavinr🙏 #1126)
2.2.3 - 2018-08-16
- ensure
ImageMapLayer
leverages a proxy. (🙏dangowans🙏 #1121)
2.2.2 - 2018-08-02
- trapped an error when Map.attribution control is not loaded.
dynamicMapLayer()
andimageMapLayer()
now both expose a newzIndex
constructor option and modifyzIndex
values appropriately internally whenbringToFront()
andbringToBack()
are called. (🙏appleshowc🙏 #1084)
2.2.1 - 2018-07-11
- resolved issue that caused some raw ES6 files to not be bundled on npm.
2.2.0 - 2018-07-08
- it is now possible to add/update features in feature services in bulk (🙏Biboba🙏 #1083)
- two new basemaps!
ImageryFirefly
andPhysical
(🙏pmacMaps🙏 #1100)
- use external sourcemap files consistently, even for debug build #1088
- better error trapping for non CORS requests (🙏strajuser🙏 #1070)
- trap for GeoJSON with null geometry #1060
- check for null attribution (🙏octavm🙏 #1078)
- ensure
token
is only included in tile requests once (🙏octavm🙏 #1092) - addressed https://nodesecurity.io/advisories/566 #1094
- cruft from npm tarball #1067
2.1.4 - 2018-03-09
- upgraded to Rollup
v0.56.5
- upgraded to @esri/arcgis-to-geojson-utils
v1.1.1
-
ensure tiledMapLayers utilize a configured proxy (🙏spoilsportmotors🙏 #1053)
-
fix logic error and simplify check for supported non-web mercator CRSs #1051
2.1.3 - 2018-02-14
- new
ImageryClarity
basemapLayer (🙏Biboba🙏 #1047) - dynamic attribution for
WorldImagery
basemap layer to attribute local Community Maps content providers
- smarter check for custom coordinate systems #1045)
- removed rogue
Proj4
console errors in webpack/browserify apps - caught the last few non ES6 imports from Leaflet (🙏finneganh🙏 #1050)
2.1.2 - 2018-01-04
- improved support for custom
wkid:3857
tiled basemaps with custom properties #1039) image
is now the default format for ImageMapLayer (🙏nickpeihl🙏 #998)- improved response parsing when no objectIdFieldName or esriFieldTypeOID are returned (🙏Saulzi🙏 #1009)
- improved cleanup when map instances are destroyed (🙏jfolds🙏 #1029)
- It is now possible for layers to pass through arbitrary custom request parameters (🙏Biboba🙏 #1036)
QueryTask.returnM(bool)
(🙏jmfolds🙏 #1002)QueryTask.distinct()
(🙏joelondon🙏 #1027)DynamicMapLayer
has a newpopup
constructor option so that custom IdentifyFeatures parameters can be passed through (🙏Biboba🙏 #1031)- more tests for existing features! (🙏Biboba🙏 #1037, #1035)
- unused
shallowClone
utility method
2.1.1 - 2017-08-11
- made Leaflet a peerDependency so that folks using WebPack can install v1.1.x without problems or duplication in their bundles
- added
UTF 8
to L.esri.request headers
- now using
npm-run-all
for concurrent, cross platform script running
2.1.0 - 2017-07-27
- error handling has been added to classes that extend L.ImageOverlay #941 thank you@Saulzi!
- dynamicMapLayer now supports an option to bust server side caches #942
- identifyFeatures and find now support requesting unformatted responses from ArcGIS Server 10.5+ map services #961
- identifyFeatures now supports passing through input geometries other than points #962 thank you@bbehling!
- dynamicMapLayer and imageMapLayer now support polar projections #975 thank you@scaddenp!
- query now supports datum transformations #976
- in imageMapLayer, noData values of
0
are now handled correctly #946 - ensure that eachActiveFeature correctly handles all geometry types #948
- layer definitions are now passed through when binding a popup to dynamicMapLayer #957
- ensure definition queries are applied to invisible layers #964 thank you@jordanparfitt!
2.0.8 - 2017-02-28
- dynamicMapLayer popups now retrieve generalized geometries from map services to improve performance. #921
- queries for features are no longer fired outside the layer's artificially constrained zoom level #928 (thank you@keithpower!)
- ES6 syntax is now used to import selected Leaflet dependencies. #920
- errors are no longer encountered when panning the map outside the artificially constrained zoom level of a previously drawn dynamicMapLayer #917 (thank you@jordanparfitt!)
- the value range returned by
IdentifyFeatures.simplify()
has been reversed for consistency withQuery.simplify()
#921 - features are no longer accidentally drawn when the map is panned to a new location outside the artificially constrained zoom level of the layer. #924 (thank you@keithpower!)
- In situations where a feature layer supports the geojson format, but it is deemed preferable to ask for Esri Geoservices JSON instead, developers can now set
isModern: false
as a constructor option. #935 (thank you@spoilsportmotors!) - an
eachActiveFeature()
method has been added toLayers.FeatureLayer
in order to isolate features in the cache that are currently being displayed. #936 Tasks.Query
now has two new spatial operators.bboxIntersects
andindexIntersects
. #937
2.0.7 - 2017-01-10
- its now possible to call setOpacity() immediately after instantiating a
RasterLayer
#909 (thank you@Saulzi!) L.TileLayer
maxNativeZoom is now honored bytiledMapLayer
#904- an error is no longer thrown when a
RasterLayer
is added to the map at a zoom level outside its own custom restraint #903 addfeature
is no longer emitted twice whenFeatureLayer.setWhere()
is called #893
RasterLayer
now exposes a publicredraw()
method #905- an inline base64 encoded transparent image is now substituted for missing tiles #902
- the
addfeature
event is no longer triggered when features are fetched and drawn for the very first time #893
2.0.6 - 2016-11-16
withCredentials
is no longer set for CORS requests #890
2.0.5 - deprecated
- DynamicMapLayer image overlays now utilize a proxy when appropriate #862
DynamicMapLayer.layerDefs
provided as a string are now serialized correctly #866 (thank you@whyvez!)- We no longer ask for raw geojson from ArcGIS Online proxied services that can't provide it. #876
- Copyright text for
TiledMapLayer
is now displayed automatically when the map has a custom projection. #877 - When a null extent is encountered by L.esri.Query, no matter its form, an
Invalid Bounds
error is passed in the callback. #879 L.esri.request
now sets the genericwithCredentials
header when appropriate #881
2.0.4 - 2016-10-18
- The default maximum width of Leaflet's attribution control is now
55px
less than the map itself #842
- A custom width crop can be configured via
L.esri.options.attributionWidthOffset
#849 L.esri.query
now supports GeoJSON MultiPolygons #866 (thank you@whyvez!)
- Last references to global namespaces have been removed from
L.esri.Util
#852 (thank you@hamhands!) - started linting our test suite
responseToFeatureCollection
now uses a case insensitive regex to look for common indexing field namesGeoJSON
/geoJSON
casing is now used consistently
2.0.3 - 2016-09-16
- attribution from service metadata is now automatically displayed in Leaflet's attribution control for all layer types #832, #842 (thank you@tyleralves!)
Powered by Esri
is now displayed in Leaflet's attribution control when any layer type is added to the map, not just L.esri.basemapLayer.- the attribution control is restricted to a single line, but expands to show all data contributors on mouse hover.
- support for
DynamicMapLayer
services that require a token to be passed in a request for raw images #830 (thank you@jaredbrookswhite!)
2.0.2 - 2016-08-03
- support for
ImageMapLayer
services that require a token to be passed in a request for raw images #812 - more graceful handling of stubborn
TiledMapLayer
services #810
- bug which resulted in global
map
scope creep #814 - bug which caused distortion in featureLayer display #814
- Attribution text which is displayed for hosted Esri basemaps is now 'Powered by Esri'
2.0.1 - 2016-07-16
- users can now pass tokens to
basemapLayer
#800
- to avoid broken tile thumbnails, a generic blank tile is referenced automatically by
tiledMapLayer
. #784 - ensure addfeature and removefeature events are emitted when
featureLayer
s are added to and removed from the map. #788 - base64
dynamicMapLayer
responses are now parsed appropriately #796
- the esri logo is no longer displayed when hosted basemaps are used. It has been replaced by '© Esri' in the map attribution. #783
- Internal methods used to display dynamic attribution for tiled services with supporting static services were moved into L.esri.Util. #799
1.0.4 - 2016-07-03
- ensure we remove all Esri logos from the map #795
- ensure addfeature and removefeature events are emitted when L.esri.featureLayers are added to and removed from the map. #788
2.0.0 - 2016-05-04
- new 'USATopo'
L.esri.basemapLayer
option. - boilerplate issue template
- Worked around IE10,11 bug that caused
L.esri.featureLayer
s not to draw #770 - Ensured
L.esri.imageMapLayer
are overlaid appropriately at world scale #774 - Ensured copyright text makes it into the minified, concatenated build of the library
- create script tag after JSONP callback function is defined #762
- Build system refactored to use latest Rollup and Rollup plugins.
- Reworked bundling directives for various modules systems to resolve and simplify various issues
- WebPack users no longer have to use the Babel loader.
- Babelify with Babel 6 now works
timeout
parameter forFeatureLayer
#730 Thanks @nathanhilbert
- Ensure all visual relics of
L.esri.dynamicMapLayer
are removed outsideminZoom
andmaxZoom
defined for the layer #744
L.esri.Util.arcgisToGeoJson
is nowL.esri.Util.arcgisToGeoJSON
- updated website to show off our 2.x API (compatible with Leaflet
1.0.0-beta.2
) and include API reference for supported plugins. - new npm script to watch/recompile source
- broke out several esri-leaflet components into external micro libraries (tiny-binary-search, leaflet-virtual-grid, and arcgis-to-geojson-utils for converting between and esri json and geojson)
- refactored source code for better custom projection support
- resolved bug that caused data to display outside a specified
min/maxZoom
- edge case affecting time aware layers
- bug which caused
null
to sometimes be written to the attribution control (thanks brianbancroft!) - made sure relevant node script commands are OS agnostic
- Make sure appropriate behavior is encountered when removing feature layers from the map while web requests are pending. #691
- Ensure that we never try to remove the Esri logo from a map twice #667
- Ensure that we never try to remove the Esri logo from a map twice #667
- Improved NationalGeographic and Gray attribution #612
- Fixed removing of
FeatureLayer
from maps (again)
- Removed stray
console.log
statements - Added missing files to NPM
- Fixed removing of
FeatureLayer
from maps
- Nested namespaces for
L.esri.Layers
,L.esri.Services
andL.esri.Tasks
have been removed for better compatibility with ES 2015 modules. This means you should now writeL.esri.query()
for example as opposed toL.esri.Tasks.query()
.
- Tests are now run against the minified production code for more safety.
- Features no longer flicker when zooming in/out on
FeatureLayer
- Various release process optimizations.
- Support for JSPM in package.json. Now you can
import featureLayer from 'esri-leaflet/src/Layers/FeatureLayer';
for more compact builds but be aware of caveats - Support for browserify in the package.json. Now you can
var featureLayer = require('esri-leaflet/src/Layers/FeatureLayer');
for more compact builds but be aware of caveats
- Files not included in git tag.
- Release process bugs.
This release is the first release that supports Leaflet 1.0.0-beta.1.
- New
featureLayer.resetFeatureStyle(id, style)
for reseting the styles on a specific feature to their original style.
- By default basemap layers
GrayLabels
,DarkGrayLabels
,OceansLabels
,ImageryLabels
,ImageryTransportation
,ShadedReliefLabels
,TerrainLabels
will now be rendered on top of polygons and polylines if the browser supports CSS Pointer Events. You can disable this behavior by passing{pane: "tilePane"}
in theL.esri.basemapLayer
options. - Now relies on the Leaflet 1.0.0-beta.1 release
- Rewritten build and test systems to rely on ES 2015 Modules specification
- More build and release automation
featureLayer.resetStyle
no longer takes and id and will reset the style of all features. Use the newfeatureLayer.resetFeatureStyle(id, style)
method.- Styling point feature layers using vector markers like
L.circleMarker
should now also use thestyle
option to set the styles of the vector markers as opposed to setting it in theL.circleMarker
options. This enables thesetStyle
,resetStyle
,setFeatureStyle
andresetFeatureStyle
options to work properly.
L.esri.featureLayer({
url: "http://...",
// define how to convert your point into a layer
pointToLayer: function (latlng, feature) {
return L.circleMarker(latlng);
},
// style that vector layer
style: {
radius: 10,
color: "red",
},
});
- All alternate/compact builds have been removed. They will be replaced with a new system for generating custom builds soon.
L.esri.Request
has been removed. Please useL.esri.get
,L.esri.get.CORS
,L.esri.get.JSONP
,L.esri.post
orL.esri.request
directly.
This represents the stable release of Esri Leaflet compatible with Leaflet 0.7.3. All future 1.0.X releases will be compatible with Leaflet 0.7.3 and contain only bug fixes. New features will only be added in Esri Leaflet 2.0.0 which will require Leaflet 1.0.0.
As this is a major release there are a number of breaking changes.
Also see the Esri Leaflet 1.0 announcement.
L.esri.Services.FeatureLayer
has been renamed toL.esri.Services.FeatureLayerService
. It should be initialized withL.esri.Services.featureLayerService(options)
.- All layers now match services and tasks and now only accept
url
in their options. E.x.L.esri.featureLayer(url)
should nowL.esri.featureLayer({url: url}})
. This does not affectL.esri.baseMapLayer
which still accepts thekey
as it's first parameter. - Request callbacks across Esri Leaflet now can handle authentication errors by calling
error.authenticate(newToken)
as opposed to listening toauthenticationrequired
event and callinge.target.authenticate(newToken)
. This means that your callbacks may be called multiple times, once with an authentication failure and once with an authentication success. To avoid any side affects of this you shouldreturn
as early as possible after handling errors. It is recommended you adapt techniques from http://blog.timoxley.com/post/47041269194/avoid-else-return-early to handle these cases.
L.esri.Services.service({
url: "http://logistics.arcgis.com/arcgis/rest/services/World/ServiceAreas/GPServer/GenerateServiceAreas",
token: "badtoken",
}).metadata(function (error, response) {
if (error && error.authenticate) {
// handle an authentication error, returning to stop execution of the rest of the function
error.authenticate("good token");
return;
}
if (error) {
// handle any other errors, returning to stop execution of the rest of the function
return;
}
// if you get here you are successful!
console.log(metadata);
});
- Added support for the
dynamicLayers
option toL.esri.DynamicMapLayer
#566 - Restored
bringToBack
andbringToFront
toL.esri.FeatureLayer
#479 load
event onL.esri.FeatureLayer
now fires at the proper time #545L.esri.DynamicMapLayer
andL.esri.ImageMapLayer
will now automatically use POST for large requests. #574L.esri.ImageMapLayer
now defaults to requestingjson
as opposed to an image to better handle authentication and large requests #574. If your Image Service does not support CORS you should set{f:'image'}
in your options.
- CDN moved to JS Delivr http://www.jsdelivr.com/#!leaflet.esri
- Non standard scale levels from tile services published in web mercator are now remapped to the standard scale levels #548 #530
- Fixed a bug introduced in RC 7 where features would sometimes not draw #546 #536
load
event is now fired after all features are created, rather than when they are all received from the server #545- Properly handle using
L.CircleMarker
withL.esri.Layers.FeatureLayer
#534 - New
redraw
method onL.esri.Layers.FeatureLayer
for programmatically redrawing features with their latest symbology. #550
- DynamicMapLayer will now request
json
by default to better expose the authentication process. If you are using ArcGIS Server 10.0 or have disabled CORS on your server you will need to adduseCors: false
to your options.
- refactor of
FeatureLayer.resetStyle()
behavior. #488 - improvement of
DynamicMapLayer
image loading logic. #498 - Fixed bug in display of dynamic map services at world scale. #450
- Switched to protocol relative urls for google fonts #501 (thanks @whymarrh!)
- Added an
alt
tag to the Esri logo #490 - Improved a few regexes #494 & #487
- Trap error when
identifyFeatures.run()
doesn't return any results. #512 - Dynamically switch to a smaller Esri logo in smaller maps. #505
- Added a
deleteFeatures()
method to bothL.esri.Layers.FeatureLayer
andL.esri.Services.FeatureLayer
for dropping records in bulk. #510 - Improve logic of rendering simplified features with
L.esri.FeatureLayer
. #320 and #518 - Various doc improvements. #511 & #507 & #506 & #495
- DynamicMapLayer will now request
json
by default to better expose authentication helpers - Attribution for basemaps is now always requested with JSONP
None
f:'json'
will now be used automatically when a proxy is set forL.esri.DynamicMapLayer
. #464- Callback functions will now only be run once when there is a CORS error. #465
- Layer ids will now be included with the GeoJSON response from
identify()
andL.esri.Tasks.Identify
. #443 - Bugfix for adding/removing certain basemap layers. #455
- All
Task
andService
constructors now accepturl
as a value within options, rather than as a separate parameter. #420 - 'Layer' objects continue to expect a
url
string to be supplied as the first parameter, but afterwards, the property is now accessible via Layer.options.url instead of Layer.url
- Fixed duplicate Esri logo bug #427
- GeoJSON is now requested directly from ArcGIS Online Hosted Feature Services #418
- other FeatureLayer performance improvements #416
minZoom
,maxZoom
, #413 andcacheLayers
were added as new FeatureLayer constructor options- default fill is now specified for multipolygons #406
- dark gray basemap now utilizes our new production service #399
- Fixed a bug where resetStyle would not work with MultiPolygon and MultiPolyline features #390
- Fixed a display bug when rapidly toggling L.esri.DynamicMapLayer on/off before the image completely loads #386
- Bower installation fixed #378
- Removed hardcoded http call in
L.esri.Controls.Logo
#383 L.esri.TiledMapLayer
now accepts a token option for secured tiles. #384- Fixed a bug with
DynamicMapLayer
still rendering after being removed from the map. #386 - Fixed 404s on example site.
- Fixed setting sr param on
L.esri.Tasks.Find
#379 bower install esri-leaflet
now works properly.
- Fixed IE 8 and 9 support that was broken in RC 1.
- Fixed sourcemaps by embedding source files inside the maps.
- Fix a bug when aborting JSONP requests
- Other small fixes for plugin support
- Added
contains
,overlaps
andintersects
toL.esri.Tasks.Query
. - Spatial methods on
L.esri.Tasks.Query
can now accept the following Leaflet types,L.Marker
,L.Polygon
,L.Polyline
,L.LatLng
,L.LatLngBounds
andL.GeoJSON
. It can also accept valid GeoJSON Point, Polyline, Polygon and GeoJSON Feature objects containing Point, Polyline, Polygon. - Most methods that accept
L.LatLng
andL.LatLngBounds
now accept the simple [lat,lng] or [[lat,lng], [lat,lng]] forms.
L.esri.Task
now acceptsproxy
anduseCors
likeL.esri.Service
. #359- Esri Leaflet can now be used in Common JS (browserify) and AMD (Dojo, RequireJS) module loaders. Examples will be coming soon.
- Source maps are now built and distributed along with the distribution files to aid in debugging. To learn how to use the source maps Treehouse and HTML5Rocks have excellent resources.
L.esri.ClusteredFeatureLayer
has been moved to its own repository. https://github.com/Esri/esri-leaflet-clustered-feature-layerL.esri.HeatmapFeatureLayer
has been moved to its own repository. https://github.com/Esri/esri-leaflet-heatmap-feature-layer- An edge case when converting ArcGIS > GeoJSON has been resolved #340
popupOptions
are now properly persevered #348setStyle
now permanently overrides the style inoptions.style
. #349setWhere
andsetTimeRange
now take callbacks. #354- You can now abort JSONP requests with request.abort() just like with
XMLHttpRequest
. #354 returnGeometry
can now be set onL.esri.Tasks.Query
. #358- a sample.html file was added to help jumpstart debugging local source files. #364
- Task methods that accept callbacks (like
run
orbounds
) now return an instance ofXMLHttpRequest
as opposed to the task or service. bindPopup
onL.esri.DynamicMapLayer
now identifies only visible features by default rather then all features.- All API requests inside of layers, tasks and services will now switch between GET and POST automatically when the request size exceeds 2000 characters. This improves IE compatibility but means that for long requests (like complex
where
clauses or long lists of IDs) you may need to setup an instance of https://github.com/Esri/resource-proxy and use theproxy
option.
L.esri.Tasks.Identify
has been renamed toL.esri.Tasks.IdentifyFeatures
. This is to reduce confusion withL.esri.Tasks.IdentifyImage
and to clearly delineate what these 2 classes do.
- Logo position can now be controlled by using the
logoPosition
option onL.esri.BasemapLayer
#210 - Logo can now be hidden entirely and re-added to the map with the
L.esri.Controls.Logo
class. If you use Esri map tiles you must display the Esri Logo! - Fix a regression from Beta 4 where features could not be loaded from ArcGIS Server if they were in non-mercator references. #283 #322
- The
addFeature
,removeFeature
,updateFeature
methods will no longer throw errors when callbacks are omitted. #285 deleteFeature
now properly removes the feature from the map so it will now appear after zooming or panning. #284- New
createfeature
,addfeature
andremovefeature
events onL.esri.FeatureLayer
. #282 L.esri.Tasks.Query
now supports Map Services and Image Services with the newquery.layer(id)
andquery.pixelSize(point)
params respectively- New
L.esri.Tasks.Find
task for searching feature text in Map Services #287. Thanks @rdjurasaj-usgs! - Support for image services via
L.esri.Layers.ImageMapLayer
. Thanks @rdjurasaj-usgs and @tomwayson L.esri.Tasks.IdentifyImage
for identifying images. Thanks @tomwayson.
- New example for parsing Feature Collections from ArcGIS Online.
- New example for labeling points with Leaflet.label.
- Travis CI is now running tests #271
- Build are no longer saved in the
/dist
folder. #307 - Development Roadmap has been updated.
Oceans
no longer contains map labels, labels have been added as another keyOceansLabels
.L.esri.FeatureLayer
no longer inherits fromL.GeoJSON
and as a result no longer hasgetBounds
,bringToBack
orbringToFront
oraddData
methods.- L.esri.Util.geojsonBounds has been removed. If you need to get the bounding box of a GeoJSON object please use Terraformer or
L.GeoJSON
. - Many other utility methods have been removed. If you were using methods in the
L.esri.Util
namespace please check that they exist. - Layers no longer fire a
metadata
event. They now have ametadata
method that can be used to get layer metadata. If you need to convert extents into L.LatLngBounds you can useL.esri.Util.extentToBounds
. L.esri.DynamicMapLayer
no longer inherits fromL.ImageOverlay
as a result thesetUrl
method no longer exists.- You can no longer pass a
cluster
object toL.esri.ClusteredFeatureLayer
, instead pass any options you want to pass toL.MarkerClusterGroup
directly toL.esri.ClusteredFeatureLayer
. - You can no long pass a string for the
layerDefs
option onL.esri.DynamicMapLayer
. Layer definitions should now be passed as an object like{'0':'STATE_NAME='Kansas' and POP2007>25000'}
- You can no longer pass a string for the
layers
option onL.esri.DynamicMapLayer
you can now only pass an array of layer ids that will be shown like[0,1,2]
. - The
createMarker
method onL.esri.ClusteredFeatureLayer
has been renamed topointToLayer
.
- Added
OceansLabels
toL.esri.BasemapLayer
. Oceans
has switched to the new Ocean basemap with out labels.L.esri.FeatureLayer
has been refactored into several classes.L.esri.FeatureGrid
andL.esri.FeatureManager
now handle loading and querying features from the service.L.esri.ClusteredFeatureLayer
andL.esri.HeatMapFeatureLayer
now inherit fromL.esri.FeatureManager
so they share many new methods and options.L.esri.FeatureLayer
,L.esri.ClusteredFeatureLayer
andL.esri.HeatMapFeatureLayer
now support time enabled service viafrom
,to
,timeFields
andtimeFilterMode
options andsetTimeRange(from, to)
andgetTimeRange()
methods.L.esri.FeatureLayer
,L.esri.ClusteredFeatureLayer
andL.esri.HeatMapFeatureLayer
now supportwhere
options and have new methods forsetWhere()
andgetWhere()
to perform filtering.L.esri.FeatureLayer
now supports generalizing polygon and polyline features on the service side for performance using the newsimplifyFactor
option.- Don't throw errors when
L.esri.BasemapLayer
is added to maps without an attribution control. If you do not add attribution you must handle adding attribution your self to the map. - Remove rbush. Switch to tracking feature ids with the cell key system.
- Remove
L.esri.Util.geojsonBounds
as it was only being used to create bounds and envelopes for rbush. - add
bindPopup
method toL.esri.DynamicMapLayer
. - add
getTimeRange
andsetTimeRange
methodsL.esri.DynamicMapLayer
. - New
L.esri.Services
namespace to handle generic abstraction of interacting with ArcGIS Online and ArcGIS server services. - new
L.esri.Services.Service
base class that can be used for interacting with any service. AllL.esri.Layers
classes now usesL.esri.Services.Service
internally for their API requests. This class also abstracts authentication and proxying. - new
L.esri.Services.FeatureLayer
class for interacting with the Feature Layer API. - new
L.esri.Services.MapService
class for interacting with the Map Server API. - new
L.esri.Tasks
namespace for tasks that map to individual API methods. - new
L.esri.Tasks.Query
class for interacting with the Feature Layer query API. - new
L.esri.Tasks.Identify
class for interacting with Map Servers that support identify.
- Patches a bug with identifying features on DynamicMapLayer
- Various updates and fixes to examples
- Heat map layer - http://esri.github.io/esri-leaflet/heatmaplayer.html
- Geocoder - http://esri.github.io/esri-leaflet/findplaces.html
- Authentication for ClusteredFeatureLayer https://github.com/Esri/esri-leaflet/commit/d23ddd99ee86bb7255e4d89b6cf3f339a441c88b
- Removed Terraformer as a dependency to cut down on build size and complexity. The neccessary Terraformer methods have been ported into L.esri.Util. This cuts a whomping 15kb from the build!
- Fix for DynamicMapLayer that is outside of min/max zoom levels https://github.com/Esri/esri-leaflet/commit/0d2c2c36ed6ccbad96e0ab24c24cc48f43079ade
- Fix for layerDefs in DynamicMapLayer https://github.com/Esri/esri-leaflet/commit/1375bbf2768ba0fb6806f51c09a3d6fa192521d9
- Add HeatmapFeatureLayer based on Leaflet.heat
- Add where and fields options to FeatureLayer and ClusteredFeatureLayer, and HeatmapFeatureLayer
- Add bounds property to the metadata event when possible #216
- Improve DynamicMapLayer panning and zooming performance. #137
- FeatureLayer and ClusteredFeatureLayer can now load features from map services. Thanks to @odoe and @jgravois.
- FeatureLayer, DynamicMapLayer and ClusteredFeatureLayer all accept a token option for accessing services that require authentication and fire a
authenticationrequired
event when they encounter a need for a token. Thanks to @aaronpk for the Oauth demos. #139 - Add DarkGray and DarkGrayLabels to BasemapLayer. #190
- An attributionControl on maps is now required when using BasemapLayer. #159