-
Notifications
You must be signed in to change notification settings - Fork 797
- What are the terms of use for Esri map tiles?
- What exactly is Esri Leaflet? Is it a replacement for Leaflet?
- Will Esri Leaflet replace the ArcGIS API for JavaScript?
- What is the benefit of using Esri Leaflet over using Leaflet all by itself?
- What are the goals of Esri Leaflet?
- Can I use Esri Leaflet with Leaflet Version 1.0.0?
- How do you decide what features get included in Esri Leaflet?
- I have an idea! What should I do?
- When will you support "x"?
- Can you implement feature "x"?
- I want to contribute. How can I help?
- I built something with Esri Leaflet can I show you?
- I built a reusable component (layer type, api wrapper, ui control etc...) can I contribute it to Esri Leaflet?
- What are the terms of use for Esri map tiles?
- Which services require authentication?
- What are some good Leaflet Plugins?
- What browsers does Esri Leaflet support?
- What versions of ArcGIS Server does Esri Leaflet support?
- Upgrading the version of Esri Leaflet used in my app broke everything!
Esri Leaflet is a collection of API plugins for the open-source javascript mapping library Leaflet. It is not a fork/improvement/replacement for Leaflet, but rather additional code aimed at making it convenient, intuitive (and even pleasurable!) to mashup data and services from ArcGIS Server and ArcGIS Online in Leaflet applications.
Absolutely not. Esri Leaflet does not have nearly the level of API completeness as the JSAPI and does not provide coverage for all use cases and services that the ArcGIS platform provides. Esri Leaflet only concerns itself with the most commonly used pieces of the platform, aiming to make them more easily accessible in Leaflet.
If you are interested in a comparison of the ArcGIS API for Javascript and Esri Leaflet check out this presentation. There is also a video of the talk given at the 2014 Esri Developer Summit.
Because of Leaflet's rich plugin ecosystem Esri Leaflet users can leverage Leaflet plugins to accent some of the features that are not implemented by Esri Leaflet. A list of good plugins can be found in this FAQ as well as the full Leaflet plugin list.
Esri Leaflet greatly simplifies incorporating ArcGIS Server and ArcGIS Online services into Leaflet applications. We see two different primary use cases for the plugins that we've created.
- Esri Leaflet is a great choice for developers who are excited about Leaflet and want to incorporate live authoritative content from government agencies and other organizations instead of relying on ETL (followed by republishing static/duplicative content).
- Because Esri offers rock bottom pricing for hosting spatial data in the cloud that can interpret spatial queries and emit GeoJSON, we hope that Esri Leaflet also provides an appealing alternative to developers who love Leaflet and prefer to skip maintaining a PostGIS instance and writing their own services to execute spatial queries.
- To provide small reusable components for consuming Esri and ArcGIS services in Leaflet.
- To provide a solid core of utilities that can be used to help developers integrate ArcGIS Services into Leaflet
- Foster an ecosystem of plugins for consuming ArcGIS services in Leaflet. Esri Leaflet Geocoder is the first.
- Provide wrappers for common tasks like visualizing and querying feature services.
Yes! version 2.0.x
of Esri Leaflet is compatible with Leaflet version 1.0.x
.
If you'd like to continue building applications that target Leaflet 0.7.x
, please use Esri Leaflet 1.0.x
.
- Will including the feature benefit a significant number of developers?
- Will including the feature allow for lots of new applications of Esri Leaflet?
- Will including the feature significantly impact the size of Esri Leaflet?
- How much work will it be to implement the feature?
- Are there multiple people who need or are suggesting the feature?
Features are also sometimes built out as separate plugins that rely on Esri Leaflet Core. The Esri Leaflet Geocoder is one such plugin.
If a feature looks like it would be beneficial, but might impact the size of the library or require a significant increase in complexity, it might work better as a plugin.
Please file an issue. Issues are a great way to discuss new ideas, build consensus and talk about implementation details.
Depends on what "x" is. Esri Leaflet is not maintained by a dedicated team within Esri, but rather is a community supported project, so we make no guarantees regarding the availability of individual features and offer no development roadmap or product lifecycle to support planning. In general, we are happy to receive suggestions. Please first check to see whether an issue has already been filed to request inclusion of the feature in the issue tracker. Alternatively, the feature might be a good candidate for a plugin.
Esri Leaflet provides generic helper methods for making requests to ArcGIS REST APIS and for converting between ArcGIS Geometries and GeoJSON objects that can be used by Leaflet. These methods can be combined to support a wide variety of services with a extra work.
It depends if it meets the above criteria for if a feature should be included. Filing an issue is a great way to get a discussion started.
Check out the contributing guide!
Absolutely! Share it on twitter with @patrickarlt, @geogangster or @esripdx. You can add your project to the list in the readme too.
I built a reusable component (layer type, api wrapper, ui control etc...) can I contribute it to Esri Leaflet?
It depends if it meets the criteria above. The feature might be a perfect fit in Esri Leaflet core or it may work better as a separate plugin. In general, we are happy to chat about it. Filing an issue is typically the best way to get the discussion started.
Premium Esri services like Directions, Geoenrichment, and Spatial Analysis all require authentication.
Esri Basemaps are free to use and do not require authentication. You can learn more about limits in the Terms of Use FAQ.
Geocoding is free to use (within monthly limits). If you need to persist results in your own system you must authenticate with the service when making requests. More information about this is available in the Esri Leaflet Geocoder summary
Authentication is also required if you want to use ArcGIS Online services that have not been shared publicly.
Learn more about getting tokens and authentication.
Make sure you check out the full list of Leaflet plugins.
- Leaflet.draw - Drawing handlers for Leaflet shapes.
- Leaflet.label - Add static text labels to the map, markers and shapes.
- Proj4Leaflet - Use proj4js to handle a wide variety of spatial references.
- Leaflet.fullscreen - Take a map full screen using the new HTML 5 fullscreen APIs.
- Leaflet.zoomslider - A zoom slider control.
- Leaflet.Pancontrol - A control for panning the map.
- Leaflet-MiniMap - A minimap control.
- Leaflet.loading - Customizable loading spinner.
- Leaflet.contextmenu - Customizable right click menu
- Leaflet.NavBar - Simple navigation toolbar with foreward/backward and home buttons.
- Leaflet.Locate - Use the HTML 5 Geolocation API to center the map.
- Omnivore - Consume CSV, KML, GPX, WKT and TopoJSON data with Leafelt
- Leaflet.MagnifyingGlass - A Magnifying glass style interface for Leaflet.
Esri Leaflet supports the same browsers as Leaflet http://leafletjs.com/features.html with the exception of Internet Explorer 7. If you need IE7 support please use the ArcGIS API for JavaScript.
In general Esri Leaflet supports any version of ArcGIS Server that is not retired. You can see if a version of ArcGIS Server is supported in this support lifecycle document.
If you server is not setup for CORS (pre 10.1) you will either need to setup CORS on your server or set the useCORS
option to false
when using Esri Leaflet.
ArcGIS Server 9.3 is not supported. There are known bugs with L.esri.DynamicMapLayer
.
The single most common breaking change that developers encounter unexpectedly is our move from expecting the urls of ArcGIS Services to be provided as a string in Service
, Task
and Layer
constructors to providing them within an options object.
In Esri Leaflet 0.0.0-beta.x and 1.0.0-rc.x we instantiated L.esri.FeatureLayer
's like this:
var myUrl = 'http://services.arcgis.com/uCX../arcgis/rest/services/yourService/FeatureServer/0';
L.esri.featureLayer(myUrl);
Starting with version 1.0.0 final (and including version 2.0.0 which is compatible with Leaflet's own 1.0.0 version) the constructor should look like this:
var myUrl = 'http://services.arcgis.com/uCX../arcgis/rest/services/yourService/FeatureServer/0';
L.esri.featureLayer( {
url: myUrl
});
check out the API reference for more information.