reverseGeocodeLocation 每次都不起作用

reverseGeocodeLocation not working every time

我在使用 reverseGeocodeLocation 时遇到了一些奇怪的问题。这就是我所做的。

我从一个 view controller 推到另一个。视图出现后,我要求当前位置。在 didUpdateLocations delegate 中,当我收到当前位置时,我调用 reverseGeocodeLocation 来获取地标值。

问题

  1. 有时它就像魅力一样工作
  2. 有时它会等待并在长时间间隔后显示结果
  3. 有时我得不到任何结果。

下面是我获取反向地理位置的代码

- (void)getReverseLocation
{
 __block CLPlacemark* placemark;

    CLGeocoder* geocoder = [CLGeocoder new];
    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error)
     {
         if(error)
             NSLog(@">>>>>>>> Error in reverseGeoLocation - %@", [error localizedDescription]);

         if (error == nil && [placemarks count] > 0)
         {
             placemark = [placemarks lastObject];

             completionBlock(placemark);
         }
     }];
}

我不确定为什么会这样。我在同一位置,互联网连接良好。

这是线程的问题吗?我也在主线程上尝试过这个。但同样的问题。

编辑:我遇到了这个错误,经过一些尝试

reverseGeoCodeLocation 错误 - The operation couldn’t be completed. (kCLErrorDomain error 8.)

这就是为什么您有时会得到结果,而其他人则不会。直接来自 Apple 的地理编码文档

Applications should be conscious of how they use geocoding. Geocoding requests are rate-limited for each app, so making too many requests in a short period of time may cause some of the requests to fail. (When the maximum rate is exceeded, the geocoder returns an error object with the value kCLErrorNetwork to the associated completion handler.)