He estado pulsando este error repetidamente, y no he podido averiguar cómo detenerlo; pero finalmente encontré un final de todo el problema que funciona bastante bien, y solo me toma un poco más de trabajo: no use el MKReverseGeocoder
de Apple en absoluto; en su lugar, llame directamente al Google's reverse-geocoding API (este es aparentemente el mismo servicio que MKReverseGeocoder
) entre bastidores). Puede recuperar JSON o XML (su preferencia), que luego tendrá que analizar, pero eso no es demasiado difícil.
Por ejemplo, desde mi aplicación está utilizando ASIHTTPRequest
, esto es lo que parece (aunque esto también sería fácil de hacer con ver con las API de Apple nativas como NSURLConnection
):
#pragma mark -
#pragma mark CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
// Be careful: My code is passing sensor=true, because I got the lat/long
// from the iPhone's location services, but if you are passing in a lat/long
// that was obtained by some other means, you must pass sensor=false.
NSString* urlStr = [NSString stringWithFormat:
@"http://maps.googleapis.com/maps/api/geocode/xml?latlng=%f,%f&sensor=true",
newLocation.coordinate.latitude, newLocation.coordinate.longitude];
NSURL* url = [NSURL URLWithString:urlStr];
self.reverseGeocoderRequest = [ASIHTTPRequest requestWithURL:url];
self.reverseGeocoderRequest.delegate = self;
[self.reverseGeocoderRequest startAsynchronous];
}
Por cierto , La API de Google tiene reglas, al igual que la de Apple. Asegúrese de leer los documentos, especialmente con respecto a las cuotas.
Acabo de recibir el mismo error recientemente. También es errático para mí: a veces el geocodificador funciona bien, a veces solo devuelve un error, mientras pasa las mismas o muy similares coordenadas cada vez. ¿Tal vez Google Geocoder está teniendo algunos problemas? –
Tiene el mismo problema. Algunas veces funciona en Maps.app pero no en mi aplicación. Entonces funciona de nuevo. Tal vez un problema de carga en los servidores de Google? –