Listed below are some of the services I've considered. I don't plan to do anything more than to render the user's current location and allow him or her to adjust it slightly if it's not accurate. No need for routing or other extra features. So most mapping services should work, the only issue is the terms and conditions that will allow me to use it free of charge.
1) Google Maps
http://code.google.com/apis/maps/
This is my first choice based on my experience using it as the Maps application on the iPhone. I have also played around with Google Maps on my web site and have found the API very easy to use.
The terms of service might be a problem.
ToS: http://code.google.com/apis/maps/signup.html
9.1 Free, Public Accessibility to Your Maps API Implementation. Your Maps
API Implementation must be generally accessible to users without charge. You
may require users to log in to your Maps API Implementation if you do not
require users to pay a fee. Unless you have entered into a separate written
agreement with Google or obtained Google's written permission, your Maps
API Implementation must not:
(a) require a fee-based subscription or other fee-based restricted access; or
(b) operate only behind a firewall or only on an internal network (except
during the development and testing phase).
Since I'm not charging, this should be OK.
10. License Restrictions. Except as expressly permitted under the Terms, or
unless you have received prior written authorization from Google (or, as
applicable, from the provider of particular Content), Google's licenses above
are subject to your adherence to all of the restrictions below. Except as
explicitly permitted in Section 7, you must not (nor may you permit anyone
else to):
10.8 use the Static Maps API other than in an implementation in a web
browser;
However, this does not look OK. Since my plan is to use the map in the UIWebView object, I think this might violate the ToS. After doing some searching, I came across this thread:
http://groups.google.com/group/Google-Maps-API/browse_thread/thread/2f42bc5e4c3368d8/fbdc4ecdc3b96096?pli=1
A Google employee weighed in and said basically that if the application were accessing a web site that could be viewed separate from the application, than the UIWebView use case should be OK.
I have seen applications that use Google Maps which can’t be used in a separately in a browser. One example is iBus, a free Portland mass transit application:
http://zhenwang.yao.googlepages.com/ibus-portland
So it appears the way I’d use Google Maps falls into the gray area of the ToS.
I should also point out that there is a nice, BSD licensed library that can help to integrate the Google Maps API into an iPhone project. This helps to make a simple API even easier to use.
http://code.google.com/p/iphone-google-maps-component/
2) Yahoo Maps
http://developer.yahoo.com/maps/
I’ve used Yahoo Maps with Flickr geotagging and the maps look just as good as Google’s. I have not, however, seen any iPhone applications that use this service.
ToS: http://info.yahoo.com/legal/us/yahoo/maps/mapsapi/mapsapi-2141.html
One big issue with the ToS is the attribution part:
http://developer.yahoo.com/attribution/
Yahoo Maps require displaying an attribution badge or label that is not overlaid on the map. It’s placed below the map. This will take away from valuable screen real estate, and for me is enough of a reason to not use Yahoo Maps. Perhaps this is why I haven’t seen it used in any iPhone applications.
3) Microsoft Virtual Earth
http://www.microsoft.com/virtualearth/
I’ve used Microsoft’s Virtual Earth from a browser and have been really impressed. I’ve also seen it used with the Loopt iPhone application.
ToS: http://www.microsoft.com/virtualearth/product/terms.html
The ToS looks OK for Non-Commercial use. That is, of course, if deploying a free iPhone application is considered Non-Commerical use.
There’s a good write-up about using Virtual Earth with the iPhone here:
http://www.geo2web.com/2008/11/13/developing-virtual-earth-iphone-applications-with-objective-c/
From reading this, it seems use of the Virtual Earth API is non-trivial. Apparently, it requires the use of SOAP requests instead of JavaScript (which Google Maps uses). Also, the returned tile images have to be programmatically assembled into a nice iPhone image. The blog post directs you to a 3rd party framework library (BSD license) that can ease implementation:
http://consonancesw.com/developers/virtualearthkit/
4) CloudMade
http://cloudmade.com/
CloudMade uses the maps from OpenStreetMap (http://www.openstreetmap.org/). I’ve seem OpenStreetMap used with the iPhone application MotionX-GPS, however, I’m not sure if it’s used through the CloudMade API.
According to the following link, they place no restrictions on the API.
http://developers.cloudmade.com/projects/show/iphone-api
Just like our other APIs, we don't want to restrict the uses of this API - you are
free to create applications that use our maps in any way you like, as long as
they comply with the terms of the iPhone SDK agreement.
To implement, the user needs to download the API code and integrate with the iPhone application. CloudMade provides some iPhone application examples to learn from.
CloudMade looks like a viable solution. And I’d prefer to use an open source solution, given that Google/Yahoo/Microsoft all seem to have vague terms of service agreements that allow them to cut off service for a variety of reasons.
Summary
So which one have I chosen? I think I’ll go with Google Maps. The ToS does give me some pause, however, my application is free and just for my own experience. If they shut it down, I’ll just switch to another mapping API.

1 comments:
Very good analysis, thank you very much! As my iphone project is commercial, I'll probably go for CloudMade.
Post a Comment