mlu*_*own 15 iphone geocoding core-location ios5
我有一个应用程序,它进行前向地理编码(获取给定地址的坐标)以显示一堆引脚MKMapView.该应用程序是在iOS支持前向地理编码之前开发的CLGeocoder(首先在iOS 5中提供).因此,我的应用程序使用Google Maps Geocoding API,这通常非常准确.给定一个带有街道号码的完整地址,它通常会在几米内为您提供该地址的确切位置.
我正在对我的应用程序进行一些更新以支持iOS 6,并决定从使用Google API切换到使用,CLGeocoder只要该应用程序在iOS 5或更高版本上运行.然而,在我的测试中(所有地址都在葡萄牙,我居住的地方),它是如此不准确,以至于完全无法使用.
我使用的– geocodeAddressString:completionHandler:,例如,给出的地址"自由大道195,里斯本,葡萄牙"它给了我一个"自由大道"在城市辛特拉,不葡京(里斯本)的.距离真实地址约15公里.Avenida da Liberdade是里斯本最大和最着名的大道之一.相当于纽约市的第五大道.这不是一些不起眼的小街道.
有没有什么我做错了得到如此可怕的准确性?其他人是否有类似的准确性问题,特别是在美国以外的地址?
目前看来我必须坚持使用Google Maps API.顺便说一句,我一直在使用iOS 6模拟器,结果并没有更好.将相同的搜索字符串放入iOS 6地图应用程序的搜索框中会产生完全不准确的结果.
编辑:添加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]);
}
}];
Run Code Online (Sandbox Code Playgroud)
编辑2:我发现,如果我使用– geocodeAddressDictionary:completionHandler:并传递一个地址字典,其中包含街道地址,邮政编码(邮政编码)以及我可能提供的详细信息,它会给我合理准确的坐标,但仍具有准确性半径超过400米这是不可接受的.
mlu*_*own 11
好吧,看起来是的,苹果公司CLGeocoder对于正向地理编码(地址 - >坐标)和Google Maps Geocoding API一样准确,特别是在美国之外.使用地址字典,尽可能完整地填写所有字段比简单的地址字符串好很多,但它仍然没有接近足够好.谷歌将(通常)在街道号码的5-10米范围内为您提供坐标,如果您幸运的话,Apple会在右侧街道的某个地方为您提供坐标.
编辑:发现Apple开发者技术说明TN2289详细信息支持的国家/地区CLGeocoder.葡萄牙似乎在其部分支持区域列表中,它描述为:
以下是不完全支持的地区,要么是因为承保范围更加有限,要么是出于其他原因.例如,位置可能仅能够被地理编码到道路级别而不是该道路上的特定地址点.
这与我CLGeocoder在葡萄牙的结果相符.我想我只需要等待改善覆盖范围.
| 归档时间: |
|
| 查看次数: |
6558 次 |
| 最近记录: |