The Map API Showdown

In an article I published more than 3.5 years ago (my god, time is flying), I compared the states of the Google and Yahoo Maps APIs, particularly looking at their geocoding capabilities and performance. A lot of time has passed since then and I felt it is time to assess the Map API landscape once again, this time bringing two new players to the game: Bing Maps API (by Microsoft) and Ovi Maps API (by Nokia). I will not go into as much detail as with my old post, but rather trying to convey how each API ‘feels’ (regarding ease-of-use, documentation etc.) from a developers point of view.

Kamarov: Give me a stopwatch and a map, and I’ll fly the Alps in a plane with no windows.

from The Hunt for Red October

While there are great posts out there that look at the visual appearance of the map imagery and their readability the topic of this post are the APIs themselves, their capabilities and features and how easy they are to use from a developers perspective. I have put together a little side-by-side comparison, inspired by Sergey Chernychev’s work, to see how common tasks can be performed with the different APIs.

Ovi Maps API

Ovi, Nokia’s brand for their internet services, opened up its Ovi Maps API and their documentation just recently, in December 2010. The API documentation consists of a Developer’s Guide, Maps API Playground and API Documentation. The Developer’s Guide gives a short overview over the API and its capabilities with little code snippets. The aim of the API Playground is to give the developer an interactive interface to play around with code examples and edit code on the fly and see how it impacts the behavior of the example. Finally, the API documentation lists the class hierarchy and methods available for the developer as part of the API.

While I can see the good intentions of providing that API Playground, I actually believe it does more harm than good. For me personally, the way Ovi presents these examples and then having to click on a “code” button to see the code (without being able to easily do “view source”), is frankly, quite annoying. Also, there are not that many examples to begin with, compared to what Google Maps offers. I feel that having separate, distinct URLs for each example (as opposed to a sophisticated JavaScript-heavy interface), where you can do “view source” and easily follow what is going on, is much more helpful. Additionally, compared to how many classes and functions are available in the API documentation, this is, by no means, reflected in the examples. There is also no search functionality in the API docs, which makes them quite cumbersome to use.

With regards to the code, I noticed that upon instantiation of the Ovi map, the developer has to add the zoom control as well as the map type selector (for map, satellite and terrain view) in additional steps in the code, as well as the actual ability for the user to drag the map. I feel like these should come by default when instantiating the map.

// instantiate the map ovimap = new ovi.mapsapi.map.Display(Y.Node.getDOMNode(Y.one('#ovimap')), { zoomLevel: mapOptions.zoom, center: [mapOptions.lat, mapOptions.lng] }); //add direct mouse interaction ovimap.components.add(new ovi.mapsapi.map.component.Behavior()); //add the zoom bar ovimap.components.add(new ovi.mapsapi.map.component.ZoomBar()); // add map type selector (for map, satellite and hybrid view) ovimap.components.add(new ovi.mapsapi.map.component.TypeSelector());

Page 1 of 5 | Next page