I am working on a web-based mapping system and I'm trying to figure out the best/most appropriate library to use. There are a few of them about and they each have pros and cons. Even after trying a few of them out I still think I could do with getting a better overall picture.
Edit: I should really specify what I'm looking for. If anyone can post a link to a decent comparison of available libraries that would be great. If everyone could also post facts/features/criticism/whatever I will endeavour to add it to the list below.
The list so far:
- Google Maps
- Microsoft Virtual Earth
- Leaflet - "The comment smaller, faster, newer, and more straightforward can also be read as less features and less tested." -Geographika (see below)
- ESRI - Works best with ArcGIS Server (see below). Google Maps and Bing maps extensions are also available, letting you use the ESRI API with Google/Bing maps (though this is true of most libraries).
- Yahoo Map API's
- Via Michelin
- OpenLayers - Extensive documentation and a good amount of functionality plus the ability to use different map providers.
- Mapstraction - Makes things very simple, especially working with multiple basemap providers. However it is still a work in progress and the functionality is lacking in places, as is the documentation. (E.g. "A GeoJSON object with the type “FeatureCollection” is a feature collection object." Not very informative.) It appears that it is still being actively developed but as of 4/4/11 there hasn't been a commit on Github since January.
- Jump - jump is a light weight maps library that works on its own, meaning, it is not a wrapper for OpenLayers or GoogleMaps API. Currently it is under development, but a lot of essential features work well.
- ModestMaps - Another smaller, faster, newer JS mapping library from the makers of Mapbox and TileMill.
OpenLayers has long been the best available open source library and it's the one I am currently using. You can do a lot with it and it supports most data types. However it's not the best for everything. For example, Leaflet seems smoother in many ways, with image fading and other visual tweaks. If you're into jQuery you might like to check out MapQuery which is like a combination of jQuery and OpenLayers. Basically, don't take my recommendation!