当使用 CLGeocoder 的 ResreverseGeocodeLocation 但返回的地标为 nil 并且 kCLErrorDomain 错误 =8

Posted

技术标签:

【中文标题】当使用 CLGeocoder 的 ResreverseGeocodeLocation 但返回的地标为 nil 并且 kCLErrorDomain 错误 =8【英文标题】:When use ResreverseGeocodeLocation of CLGeocoder but the returned placemarks is nil and the kCLErrorDomain error =8 【发布时间】:2012-11-17 17:15:09 【问题描述】:

我想通过CLLocationCoordinate2D 获取位置,我使用了以下代码

//newLocation is a CLLocationCoordinate2D object
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:newLocation completionHandler:
^(NSArray *placemarks, NSError *error)
CLPlacemark *placemark = [placemarks objectAtIndex:0];
self.locationInput.text =placemark.subLocality;
self.locationInput.text =placemark.ISOcountryCode;
];

但是返回的 placemarks 是 nil 并且错误描述是 kCLErrorDomain error =8

【问题讨论】:

newLocation 的值是多少? 新位置是[[CLLocation alloc] initWithLatitude:32.392917 longitude:119.416108] Apple Maps 那里有道路数据吗? 【参考方案1】:

这里记录了返回值。

https://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CoreLocationConstantsRef/Reference/reference.html#//apple_ref/doc/uid/TP40010237-CH2-SW2

数字 8 是“kCLErrorGeocodeFoundNoResult”,所以我怀疑您正在搜索没有结果的东西。我在其他地方读到 CLGeocoder 只能在设备(而不是模拟器)上运行,但我自己还没有验证过。如果您确定您的搜索字符串应该得到结果,请在设备上尝试您的代码。

【讨论】:

谢谢。你是对的,位置可能有问题。 我的网络有问题吗,你知道吗,我在中国。【参考方案2】:

我的问题是我使用连接到泰国服务器的 ***,试图在英国邮政编码上执行 reverseGeocodeLocation。 当我将 *** 切换到英国服务器时,它运行良好。

【讨论】:

以上是关于当使用 CLGeocoder 的 ResreverseGeocodeLocation 但返回的地标为 nil 并且 kCLErrorDomain 错误 =8的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 没有互联网连接的 CLGeocoder

为啥将 CLGeocoder 与“地标”数组一起使用?

使用 CLGeocoder 的正向地理编码示例

使用 CLGeocoder 反向地理编码查找当前位置

CLGeocoder() 意外返回 nil

CLLocationManager 和 CLGeoCoder