Ho riscontrato ripetutamente questo errore e non sono riuscito a capire come fermarlo; ma alla fine ho trovato un end-run sull'intero problema che funziona abbastanza bene, e richiede solo un po 'di lavoro: non usare affatto lo MKReverseGeocoder
di Apple - chiama direttamente lo Google's reverse-geocoding API (questo è apparentemente lo stesso servizio che lo MKReverseGeocoder
fa dietro le quinte). Puoi recuperare JSON o XML (le tue preferenze), che dovrai analizzare, ma non è troppo difficile.
Per esempio, dal momento che la mia applicazione sta usando ASIHTTPRequest
, questo è ciò che sembra (anche se questo sarebbe anche facile da fare con che fare con le API di Apple native come 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];
}
A proposito , L'API di Google ha regole, proprio come fa Apple. Assicurati di leggere i documenti, in particolare per quanto riguarda le quote.
fonte
2011-01-28 22:39:35
Ho appena iniziato a ricevere lo stesso errore di recente. È anche irregolare per me - a volte il geocoder funziona bene, a volte restituisce solo un errore, passando ogni volta le stesse coordinate o molto simili. Forse Google Geocoder sta avendo dei problemi? –
Avendo lo stesso problema. A volte funziona in Maps.app ma non nella mia app. Quindi funziona di nuovo. Forse un problema di caricamento sui server di Google? –