MKErrorDomain错误4 iPhone

MKErrorDomain错误4 iPhone,iphone,mkreversegeocoder,Iphone,Mkreversegeocoder,当我运行我正在构建的gps应用程序时,我总是随机得到这些信息。这种情况并非每次都发生,传入的坐标始终有效(我会记录它们)。有这些文件吗 编辑: 然后大约有一半的时间它返回一个错误。如果出现错误,我尝试释放并重新分配地理编码器,但没有帮助。唯一做的事情就是重新启动应用程序。在MapKit框架的“MKTypes.h”中,定义了以下内容: 映射工具包框架的错误常量 enum MKErrorCode { MKErrorUnknown = 1, MKErrorServerFailure,

当我运行我正在构建的gps应用程序时,我总是随机得到这些信息。这种情况并非每次都发生,传入的坐标始终有效(我会记录它们)。有这些文件吗

编辑:

然后大约有一半的时间它返回一个错误。如果出现错误,我尝试释放并重新分配地理编码器,但没有帮助。唯一做的事情就是重新启动应用程序。

在MapKit框架的“MKTypes.h”中,定义了以下内容:

映射工具包框架的错误常量

enum MKErrorCode {
   MKErrorUnknown = 1,
   MKErrorServerFailure,
   MKErrorLoadingThrottled,
   MKErrorPlacemarkNotFound,
};

MKErrorPlacemarkNotFound

找不到指定的placemark


这听起来像是在代码中引用某个未知的placemark?或者可能是谷歌没有你要经过的位置的名称——不管坐标多么有效。

事实上,我也遇到了这个问题。代码非常紧凑

//一,。向地图询问当前坐标

CLLocationCoordination2D用户位置

userLocation.latitude=[[u theMapView.userLocation]坐标].latitude; userLocation.longitude=[[u theMapView.userLocation]坐标]。经度

NSLog(@“%f,%f”,userLocation.latitude,userLocation.longitude)

//二,。反向地理编码坐标

MKReverseGeocoder*reverseGeocoder=[[MKReverseGeocoder alloc] initWithCoordinate:userLocation]

[reverseGeocoder setDelegate:self]

[反向编码器启动]


然后简单地在fail delegate方法中记录错误。第一次或第二次它工作,然后停止工作

我刚刚做了很多关于这个问题的研究,似乎超出了我们的控制范围。我查看了开发者论坛以及Stack和其他地方的所有内容,除了使用不同的服务,没有人有其他解决方案。在这个问题上有一个很好的线索

有些人在一段时间后发现了错误,我只是发现它出现了一段时间,然后又回来了。我看了一下“当前地址”示例代码,看不出我可能会把事情搞砸。我运行了示例代码,可以肯定的是,它记录错误而不是返回位置


这个链接有一些使用谷歌反向地理编码器的代码:

我遇到了同样的问题(完全相同的代码有时会随机失效),我想我已经找到了答案。From:“每个地图套件应用程序的反向地理编码容量有限,因此节约使用反向地理编码请求对您有利。”


所以我的理论是,我们的利率是有限的。。。由于没有其他变量发生变化(例如,我的代码没有变化,我正在模拟器上运行它,因此设备的位置没有变化,等等),我认为这一定是唯一剩下的原因。

我反复遇到此错误,无法找出如何使其停止;但我最终找到了一个解决整个问题的方法,效果很好,只需要多做一点工作:根本不要使用苹果的
MKReverseGeocoder
,而是直接调用(这显然是
MKReverseGeocoder
在幕后所做的相同服务)。您可以返回JSON或XML(您的首选项),然后必须解析它们,但这并不难

例如,由于我的应用程序使用的是
ASIHTTPRequest
,这就是它的外观(尽管使用苹果的原生API(如
NSURLConnection
)也很容易做到这一点):


顺便说一句,谷歌的API有规则,就像苹果的API一样。请务必阅读文档,特别是关于配额的文档。

我最近遇到并解决了这个问题。在我的例子中,当Apple Map找不到任何查询结果时,它有时会抛出这个“MKErrorDomain=4”错误。因此,我最终将其视为“未找到结果”


找到这一点非常困难,MapKit需要一个更好的错误处理系统。

是的,我遇到了这些常量,但问题是如何修复它,更奇怪的是,为什么它看起来是随机发生的。是不是在不同的时间获得了不同的精度级别,小数点的位置也不同了?如果你发布了一些代码来显示这些错误的位置,那么会更容易帮助你。更新:现在还有第5个错误,MKErrorDirectionsNotFound,以防有人收到错误5。我最近刚开始收到相同的错误。这对我来说也是不稳定的——有时地理编码器工作正常,有时它只是返回一个错误,而每次都传递相同或非常相似的坐标。也许谷歌地理编码器有一些问题?有同样的问题。有时它在Maps.app中有效,但在我的应用中无效。然后它又起作用了。也许是谷歌服务器的负载问题?
enum MKErrorCode {
   MKErrorUnknown = 1,
   MKErrorServerFailure,
   MKErrorLoadingThrottled,
   MKErrorPlacemarkNotFound,
};
#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];
}