2009-07-16 10 views
14

Dado que el MapKit no proporciona funcionalidad de geocodificación hacia adelante hoy en día, cualquier persona puede proporcionar ayuda sobre cómo me puedo utilizar una barra de búsqueda para devolver una latitud y longitud coordenadas de una dirección introducido por el usuario en la actualidad. Si alguien puede proporcionar un código de muestra que sería genial.geocodificación hacia adelante desde el iPhone

Respuesta

1

No existe tal funcionalidad en MapKit. Lo mejor que puede hacer es llamar a un servicio web de terceros. Google tiene algunas API para hacer esto y también Yahoo, creo. Ambos tienen restricciones de uso comercial, así que lea el acuerdo.

2

Es un problema conocido con la versión actual de MapKit. Presente un informe de error y complique # 6628720 para que lo hagan una prioridad.

Mientras tanto, hay API de codificación avanzada de Google Maps, a través de Yahoo Placemaker, o Cloudmade.

26

He creado una API de geocodificación hacia adelante para el servidor de codificación geográfica de Google. Mira mi entrada de blog: http://blog.sallarp.com/ipad-iphone-forward-geocoding-api-google/

+0

Buen trabajo. Funciona de la caja. Muchas gracias. –

+0

Estoy usando el geocodificador de avance de Merrimack también. Buen trabajo. –

+0

Necesita ser actualizado a la nueva API de Geocodificación de Google (por ejemplo, ahora no se necesita ninguna clave de API). Además de eso, hace un gran trabajo. Gracias @Merrimack. http://code.google.com/apis/maps/documentation/geocoding/ – DenTheMan

2

También hay un marco aquí: https://github.com/tylerhall/CoreGeoLocation

Comentario de documentos: Un GEOCODER Objetivo y envoltura Geocoder inversa torno a los servicios de geocodificación de Yahoo o las API de Google Geo principalmente.

+0

Nota importante para los usuarios: si usa la API de geocodificación de Google, debe mostrar el resultado en un mapa. Yahoo no parece tener esta limitación. – DenTheMan

+2

Tienes que mostrar el resultado en un mapa de GOOGLE. Distinción importante. –

15

He creado SVGeocoder, un simple reenvío y clase de geocodificador inverso para iOS. También utiliza la API de geocodificación de Google y devuelve un MKPlacemark.

Esta es la forma de geocode una cadena de dirección:

NSString *addressString = @"3245 St-Denis, Montreal" 
SVGeocoder *geocodeRequest = [[SVGeocoder alloc] initWithAddress:addressString]; 
[geocodeRequest setDelegate:self]; 
[geocodeRequest startAsynchronous]; 

Y se invierte codificación geográfica de un objeto CLLocationCoordinate2D así:

CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(45.54181, -73.62928); 
SVGeocoder *rGeocoderRequest = [[SVGeocoder alloc] initWithCoordinate:coordinate]; 
[rGeocoderRequest setDelegate:self]; 
[rGeocoderRequest startAsynchronous]; 

El SVGeocoderDelegate ofrece estos 2 métodos:

- (void)geocoder:(SVGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark; 
- (void)geocoder:(SVGeocoder *)geocoder didFailWithError:(NSError *)error; 
+1

Nota importante para los usuarios: si utiliza la API de geocodificación de Google, debe mostrar el resultado en un mapa. – DenTheMan

+0

buen código. ¡¡¡Gracias!!! – tiltem

+0

nice one Gracias. –

32
+2

Con iOS6, esta será probablemente la única solución utilizable (además de posiblemente Yahoo) ya que dudo que Google esté contento contigo al superponer los datos de geocodificación de Google en un mapa de Apple ... –

+0

@KendallHelmstetterGelner Creo que Google estaría bien con esto, pero Apple ?...talvez no. – DataGraham

+1

Son los TOS de Google los que lo previenen. https://developers.google.com/maps/documentation/geocoding/#Limits (no se muestran los datos de geocodificación de Google en mapas que no son de Google). A Apple no le importa dónde obtienes los datos de las cosas que superpones en un mapa. Ahora que Apple no está usando Google para los datos del mapa, no hay restricciones sobre cómo puede usar MapKit. –

Cuestiones relacionadas