2015-06-18 60 views
0

我正面临一些奇怪的问题reverseGeocodeLocation。这就是我所做的。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.)

+0

这是一个Web服务并具有速率和其他限制,请参阅Apple文档。在错误检查和打印错误,看看为什么。将错误信息添加到问题。同时显示你的代码,特别是completionHandler代码。 – zaph

+0

是的Zaph,刚刚看到了文档。我认为没有选择,而不是等待它得到结果。是否有其他解决方案来获取它? – JiteshW

+0

我想抓住错误。但它现在不出现。一旦我遇到它,我会分享它。 :) – JiteshW

回答

1

这是为什么你得到的结果有时,别人没有。直接从苹果的地理编码文件

应用程序应该意识到他们如何使用地理编码。地理编码请求对每个应用都是速率限制的,因此在短时间内请求太多可能会导致某些请求失败。 (当超过最大速率时,地理编码器返回一个错误对象,其值为kCLErrorNetwork到关联的完成处理程序。)