The requirements I have have to do with being able to print routes between many nodes, be able to query the distances between nodes for best possible route calculation and to show custom icons on the maps.
It is important to have a mapping source which is accurate as far as roads and streets are concerned.
I have investigated open street maps, but i am afraid that it may not be entirely accurate. Any suggestion of commercial library/API would be appreciated (as long as it's intuitive to use and does not lock you in functionality wise)
I started off with Google Maps API for investigative purpose. I would be using the end application internally and would be for paid (so it means if I were to use Google maps, I would be paying for their commercial licence which is quite a big sum. And I only need maps for select areas , starting in northern Europe)
It would be nice to have a maps API which can be easily integrated in a Spring-MVC based system (so a JavaScript or Java based API)
It may be worth talking to Drawlive. I've only used their distance finder API, but they also have mapping and route generation. The integration for distance finding is via SOAP, and I used Axis generate the client. Bing Maps as suggested before me may also be an option: one of my customers chose them because the entry fee was much less than Google Maps.
Bing Maps Platform (previously Microsoft Virtual Earth) should be a cheaper option than google maps for commercial use, can print routes between nodes, supports distance calculation and provides a JS API.
We used CloudMade for our most recent map-based app. Their data is sourced from OpenStreetMap, but we've been impressed with the quality of the maps. OSM is something of a moving target, since the maps are continuously being updated, but always for the better.
CloudMade offer a commercial service on top of that data (i.e. SLA, support, etc). Small company, eager to please. Makes a refreshing change from dealing with Google and Bing, who are too big to care. They're adding new features all the time, and were happy to change their implementation priorities when we asked them to.
Services include a javascript API, as well as a geocoder, and a simple static map web service, all of which we use from our Spring-based app.