- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用程序可以进行正向地理编码(获取给定地址的坐标)以在 MKMapView
上显示一堆图钉。该应用程序是在 iOS 使用 CLGeocoder
支持正向地理编码之前开发的。 (首次在 iOS 5 中提供)。因此,我的应用程序使用 Google Maps Geocoding API ,这通常是非常准确的。给出带有街道号码的完整地址,通常会为您提供几米范围内该地址的确切位置。
我正在对我的应用进行一些更新以支持 iOS 6,并决定从使用 Google API 切换到使用 CLGeocoder
(前提是该应用在 iOS 5 或更高版本上运行)。然而,在我的测试中(所有地址都在我居住的葡萄牙),它非常不准确,以至于完全无法使用。
我正在使用– geocodeAddressString:completionHandler:
例如,给定地址“Avenida da Liberdade 195,Lisboa,Portugal”,它会给我辛特拉市的“Avenida da Liberdade”,而不是里斯本(里斯本)。距离真实地址大约15公里。自由大道是里斯本最大、最著名的大道之一。相当于纽约市的第五大道。这不是一条不起眼的小巷。
我是否做错了什么才能获得如此糟糕的准确性?其他人是否也存在类似的准确性问题,尤其是美国境外的地址?
目前看来我必须坚持使用 Google Maps API。顺便说一句,我一直在使用 iOS 6 模拟器,但结果并没有更好。将相同的搜索字符串放入 iOS 6 map 应用程序的搜索框中会得到相同的完全不准确的结果。
编辑:添加了CLGeocoder
代码:
CLGeocoder *fgeo = [[[CLGeocoder alloc] init] autorelease];
NSLog(@"Geocoding for Address: %@\n", address);
[fgeo geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {
if (!error) {
// do stuff with the placemarks
for (CLPlacemark *placemark in placemarks) {
NSLog(@"%@\n %.2f,%.2f",[placemark description], placemark.location.horizontalAccuracy, placemark.location.verticalAccuracy);
}
} else {
NSLog(@"Geocoding error: %@", [error localizedDescription]);
}
}];
编辑2:我发现如果我使用– geocodeAddressDictionary:completionHandler:
并传入一个地址字典,其中包含街道地址、邮政编码(邮政编码)以及我能提供的尽可能多的详细信息,它给了我相当准确的坐标,但精度半径仍然超过 400m,这是 Not Acceptable 。
最佳答案
嗯,看来是的,Apple 的 CLGeocoder
的正向地理编码(地址 -> 坐标)并不像 Google map 地理编码 API 那样准确,尤其是在美国以外的地区。使用尽可能完整填写所有字段的地址字典比简单的地址字符串效果要好得多,但它仍然不够好。 Google(通常)会为您提供街道号码 5-10m 范围内的坐标,而如果您幸运的话,Apple 则会为您提供正确街道上某处的坐标。
编辑:找到苹果开发者Technical Note TN2289其中详细介绍了 CLGeocoder
支持的国家/地区。葡萄牙似乎在其列表中 Partially Supported Regions ,它描述为:
The following are territories are not fully supported, either because coverage is more limited or for other reasons. For example a location may only be able to be geocoded to road level as opposed to a specific address point on that road.
这与我在葡萄牙的 CLGeocoder
的结果相符。我想我只能等待改善的覆盖范围。
关于iphone - CLGeocoder 地理编码极其不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11614721/
我有一个简单的问题。 MKReverseCoder 已弃用,自 iOS 5 起不再工作。我们必须使用CLGeocoder。但是,iOS4下有很多人。新应用程序如何与 iOS4 和 iOS5 一起使用进
我有一个应用程序可以进行正向地理编码(获取给定地址的坐标)以在 MKMapView 上显示一堆图钉。该应用程序是在 iOS 使用 CLGeocoder 支持正向地理编码之前开发的。 (首次在 iOS
我正在使用CLGeocoder来确定特定位置的地标的项目。 这样非常简单的调用。 CLGeocoder().geocodeAddressString(location) { (placemarks,
我正在尝试找出方法来限制我向 CLGeocoder 发出的请求数量,因为我不断超出最大限制。我得到“Error Domain=kCLErrorDomain Code = 2”(null)”。基本上,每
documentation CLGeocoder 状态: An iOS-based device must have access to the network in order for the ge
我没有在文档中看到任何明确提及的内容: https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLG
您好,我正在使用此方法来获取坐标并向 map View 添加一个邮政编码的图钉 -(void)myMapview { //sitePC is an Array with the Post co
在模拟器中我将位置设置为 Latitude: 38.056709 Longitude: -78.6115 但返回的地标是弗吉尼亚州的。 CLGeocoder *geocoder = [[CLGeoco
在我的 viewDidLoad 中,我有这个方法,可以将 Parse 中的位置转换为城市和州。唯一的问题是,大多数时候它以错误的顺序附加。另外,位置变量末尾的 .location 是一种自定义方法,可
我正在尝试使用由 URL 和城市名称组成的字符串发出 http 请求,使用 CLGeocoder 获取用户的当前位置,然后返回他们所在城市的名称。 string 在调用之前生成,并使用 + 运算符连接
我正在使用 CLGeoCoder 进行正向地理编码。它在 OS > 5.0 的设备中运行良好。 但是应用程序崩溃是操作系统 : dyld: Symbol not found: _OBJC_CL : A
所以我试图让它在完成处理程序之后做一些事情,但我一直收到错误: expected CLGeocodeCompletionHandler class func didCompleteGeocoding(
我正在 iOS 8.0 中开发应用。 通过下面的链接,我正在分配位置对象, How can I get current location from user in iOS 我的目标是根据当前位置找出城
我正在使用 CLGeocoder 在 map 上定位地址并计算用户与一大堆地址的距离。 这是使用 CLGeocoder 的代码部分: CLGeocoder *geocoder = [[CLGeocod
我正在使用 CLGeocoder reverseGeocodeLocation 从坐标中获取地址,似乎在中国返回“地理编码器失败:错误域=kCLErrorDomain 代码=8”操作无法完成。 (kC
我正在为 IOS5 开发一个 iPhone 应用程序。我目前正在使用位于 CoreLocation 框架内的 CLGeocoder 类。我无法弄清楚完成处理程序 block 是否在最后调用,在地理编码
给定经度和纬度不是我的当前位置,我如何使用 GLGeocoder 执行反向地理编码查找? self.geoCoder = [[CLGeocoder alloc] init]; self.locatio
我要复活this和 this问题,因为问题对我来说仍然存在,所以我正在写一个新问题。 这是我的代码: - (SVGeocoder*)initWithParameters:(NSMutableDicti
谁能帮我理解为什么下面的代码会有这样的输出: [ +/- 5.00m (speed 32.65 mps / course 294.26) @ 7/27/16, 4:34:19 AM Eastern D
我在使用 CLGeocoder 时遇到问题,当我调用 geocodeAddressString:withCompletionHandler 时,我只得到一个结果,尽管我知道输入的字符串应该返回多个值。
我是一名优秀的程序员,十分优秀!