iOS: ReverseGeocoding Using CLGeocoder Vs. Google Geocoder API - iphone

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

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!

Using GPS and/or maps in iphone app

I would like to know if it is possible to pass an address from an SQlite data base to GPS or Google maps and have it show on a map at the press of a button. If anyone is aware of a tuturial that could help me that would be appriciated.
I would also like to get current location and show local places on map, also populated from the same database. Thanks in advance.
In order to translate address to lat/long coordinate you will have to use the Google directions API since apple is not supporting forward geocoding.
You can take a look at this API - pretty straight forward:
http://code.google.com/apis/maps/documentation/directions/
for iOS 4.x and below you will need to use the Google API but in iOS 5 Apple has implemented a really nice foreword geocoding API.

Using mapkit in an iphone app

I would like a map inside my iphone app which I want to query with search terms depending on certain values.
Does the mapkit framework accept queries of e.g. The United States and then display them?
I know this is really simple compared to the uses available from mapkit, that is why I wonder if it is covered?
This answer might be useful:
How do I do geocoding (NOT reverse geocoding) on iPhone?
Currently MapKit only provides Reverse Geocoding from coordinates to an address. For forward geocoding (an address or placename to coordinates) you'll need to use a geocoding API.
If your application only has a set number of things to be searched and you know the coordinates (like countries in your example) you could store and search them in core data, sqllite etc.

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.