我反复遇到这个错误,无法弄清楚如何让它停止;但我终于找到了一个很好的解决整个问题的方法,只需要多做一点工作:根本不要使用苹果的MKReverseGeocoder
——而是直接调用谷歌的反向地理编码 API(这显然是同一个服务这MKReverseGeocoder
在幕后)。您可以取回 JSON 或 XML(您的偏好),然后您必须对其进行解析,但这并不难。
例如,由于我的应用程序使用的是ASIHTTPRequest
,这就是它的样子(尽管这也很容易使用 Apple 的原生 API,例如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];
}
顺便说一句,谷歌的 API 有规则,就像苹果的一样。确保您阅读了文档,尤其是关于配额的文档。