Use MKReversegeoCoder with native application - iphone

I have used MKReverseGeocoder from iPhone sdk for my application without using mapview of iphone sdk,but my application has map view which i am getting from google api passing Address.
But in order to get address i am doing as follows :
Current location(Latitude/Longitude) with CLLocation library
MKReversegeocoder API of iphone sdk to get address from latitude/longitude
Sending this address to google maps api to get the map
So my doubt is whether my procedure of using iphone MKReversegeocoder voilating the rules of google terms & conditions as i am not using mapview of iphone sdk
References:
http://developer.apple.com/iphone/library/documentation/MapKit/Reference/MKReverseGeocoder_Class/Reference/Reference.html
http://code.google.com/apis/maps/iphone/terms.html
Awaiting for anyone valuable help to clarify my doubt

You do not state which of Google's map API's you use for getting the map. According to clause 10.8 you may only use the static API if you access it from a web browser. If you are using any of the other API's you should be fine. You are not required to get the map through Apple's map API (clause 1.1, 1.3 and others) but may use additional Google API's for content.
Clause 10.12 states that you must only use the data in conjunction with a Google map. It doesn't however state which Google map API you must use for this (no requirements for using Apple API), so as long as you use at least on of the map API's this should be fine.
I'm not a lawyer by trade or profession, but to my best of knowledge and understanding of their terms you should be home safe.

Related

Panoramio pictures on iOS without Google Maps

I'm developing a little iOS App which shows POIs on a standard MKMapKit map (from Apple). When the user select a POI, the app send a request to Panoramio to get a photo from the latitude and the longitude, like that :
http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=2&minx=XXXXXXXX&miny=XXXXXXXX... etc...
The problem is that I saw today on the Panoramio ToS :
http://www.panoramio.com/api/terms.html
Section 2: API Client restrictions
You may not use the API in API Clients using map technology other than Google Maps or any photo-sharing sites.
I'm not using Google Maps API for iOS so the question is : can I use the standard MKMapKit from Apple AND show photos from Panoramio in the same app ?
If not, is there an alternative solution to get photos from GPS coordinates ?
Thanks
First off, I AM NOT A LAWYER AND THIS IS NOT LEGAL ADVICE.
Disclaimer aside, use apple's CoreLocation classes to generate latitude/longitude information, and you never touch mapping software.
Geolocation and mapping are two complimentary functions that don't necessarily interact.
From what I read there, I don't see a problem with retrieving your location via the CoreLocation framework, and subsequently using that info to request map information from Panoramio.
Good luck!

iOS: ReverseGeocoding Using CLGeocoder Vs. Google Geocoder API

I am building an iOS application that in one of its functions implements reverse geocoding for obtaining street addresses from user gesture tap on a map.
When running the app using CLGeocoder's reverse geocoding features, I was only able to get the city and country details. In some cases in main roads I was able to get the main road name.
I thought that this limitation is from the Google Maps api.
But when I tested this example, (http://gmaps-samples.googlecode.com/svn/trunk/geocoder/reverse.html) I was able to get much more accurate and detailed information such as street number and name and zip code.
Is this a limitation of CLGeocoder? if so, how can I implement the Google Maps api on my app?
It's my understanding that CLGeocoder has not used Google for data for around the last year; When it did use Google there was a substantial limitation on number of users per day.
You may also want to try the same CLGeocoder call in an iOS6 simulator to see if you get more data.
You could use the Google API calling directly from your app, but be carful to read the TOS for limitations in regards to users.
Well, it would appear that yes, Apple's CLGeocoder is nothing like as accurate for forward geocoding (address -> coordinates) as the Google Maps Geocoding API, particularly outside of the USA. Using an Address Dictionary with all the fields filled out as fully as possible works a lot better than a simple address string, but it's still no where near good enough. Where Google will (usually) give you coordinates within 5-10m of the street number, Apple will give you coordinates somewhere in the right street, if you're lucky.
Found Apple Developer Technical Note TN2289 which details Supported Countries for CLGeocoder.
Further iOS6 would stop the support to use of Google Maps

accessing google maps via UIWebView - illegal?

New to iPhone development. Working on first app. I'm accessing google maps via UIWebView to forward geocode an address using "http://maps.google.com/maps?q=my address". It works, although it has this quirk of requiring you to hit "Back" button and then the "Detail" button (provided by the navigation bar) to get back to the screen from whence you started. If anyone knows why it does this, I'd love to hear. My real question, however, is this a legal use of google maps? Since I intend this app for commercial use, am I violating Google's rules + regs? If it is illegal, what's my alternative? Thanks.
Using Google Maps in a UIWebView is permitted by Google's Terms of Service.
In iOS 6 Apple switched the maps backend from Google to its own, and even though it is technically possible to use Google's map tiles in MKMapView, that is not permitted by Google's ToS.
Here's the clarification directly from #GoogleMapsAPI on Oct 3 '12:
Q: There are some iOS apps using GMaps tiles, so I want to know they are legal or not legal with licence violation.
A: Direct tile access is not permitted. Using JavaScript API in a web view is permitted.
I'm not an iPhone developer and the last thing i know is objective-c, but have you considered using the Google Maps API?
http://code.google.com/apis/maps/faq.html#mapsformobile
It says
The Google Maps JavaScript API v3 has been developed to cater to mobile devices, and is suitable for browser applications targetted at both the desktop and devices that include a web browser with a full JavaScript implementation, such as the Apple iPhone.
For browser based applications targetted at devices not suitable for using the JavaScript API, the Static Maps API delivers map images in GIF, JPG, and PNG formats, including markers and polylines. Note that it is not permitted to use the Static Maps API outside of browser based applications.
I'd surely try it, at least the Static Maps API cos it's extremely easy to use, and the overall agreement allows commercial use.
You might be better off using the Bing API, it's designed to be used client and server side. So you should be able to make a web service request without using UIWebView.
Rich

iPhone Mapkit: How can I get a real business name/address from a longitude/latitude?

I'm writing an iPhone application and trying to determine how to find a business name/address from a user's current GPS location (longitude/latitude). For example, if someone if using the application from inside a Starbucks, how can I find this out from their location? Is there a way to do this using mapkit or any API/Webservice?
You can do this with MKReverseGeocoder by providing a MKReverseGeocoderDelegate. It's actually quite simple.
The delegate will give you all sorts of information as an MKPlacemark.
You can get an address (MKReverseGeocoder), but you can't get a business name using the iPhone native SDK. I believe that both Google and Bing provide APIs for this, but one that I like to use (and it may have the most momentum) is Foursquare's.

How can I get the coordinates of any given address using CoreLocation framework and not google Maps API?

I'm interested in finding out the coordinates of "any" given address and not just the current location using only CoreLocation.Framework. I do not wish to use google maps API or yahoo maps or any other third Party maps API.
Is it possible? How can I get the coordinates of any address?
Thanks
EDIT - Thanks to a comment, I realized my original answer is dreadfully out of date. At the time, in late 2009, it was a massive pain to geocode - reverse geocoding was possible via Core Location APIs, but forward geocoding was not possible until iOS 5.
But in iOS 6.1 MapKit introduced an even better API, the MKLocalSearch class. It's very easy to perform search queries for an address and then inspect the properties of the returned objects.