woot586
woot586

Reputation: 3965

How to find the long and lat of a city on the iphone?

I am trying to find the long and lat of a city on the iphone. Say the user is searching for London, I would call some function that would retrieve the long and lat of London. I have looked on the web and found you can use a Google API but there must be an Apple function somewhere to handle this?

I have come accross the MKReverseGeocoder which takes the long and lat and tells you what city you are near. e.g.

// reverse geocode the user location

geocoder = [[[MKReverseGeocoder alloc] initWithCoordinate:mapView.userLocation.location.coordinate] autorelease];

If it can reverse the process there must be some form of MKGeocoder class?

Upvotes: 2

Views: 902

Answers (4)

Mike Akers
Mike Akers

Reputation: 12247

The iOS5 SDK has added support for both forward and reverse geocoding. Take a look at at the CLGeocoder class class for more info.

Upvotes: 2

Dan Ray
Dan Ray

Reputation: 21903

First, give up that there "must be" an Apple way. There really isn't. If you don't believe me and my nearly 2k of experience points, listen to Ole and his 13k.

There are three services I've seen.

I tried Google's geocoding API. It's decent, but a bit complicated, and they throttle your queries pretty harshly.

Then I tried MapQuest's, which I found to be surprisingly excellent. I have two apps bound for the app store in the next month or so that use MapQuest's API.

Then I found Geonames, which I'm very impressed by but haven't had the opportunity to use yet. Note that Geonames DOES allow you to download their data, so if you really need network-free service, this might be a solution.

Apart from that, you're going to be calling something off the device. Which, by the way, you are when you use MKReverseGeocoder--that's just a wrapper around Google's reverse geocoding service.

Upvotes: 1

vikingosegundo
vikingosegundo

Reputation: 52227

See OpenStreetMap. It gives you more flexibility in accessing its data. You could pre-populate a CoreData store with the informations you need.
There are some api-clients, i.e. route-me or cloudmade.

Upvotes: 2

Ole Begemann
Ole Begemann

Reputation: 135578

but there must be an Apple function somewhere to handle this

Why must there be? Because there isn't.

There are a number of web services you can use (e.g. Google) or you could download a place name database such as http://www.geonames.org/ and import it into your app. It's probably best to import it into an SQL database which you can then search from your app.

Upvotes: 2

Related Questions