2012-07-05 69 views
9

我有一个CLGeocoder的问题,当我打电话给geocodeAddressString:withCompletionHandler时,我只能得到一个结果,尽管知道输入的字符串应该返回多个值。该类参考甚至规定:CLGeocoder只返回一个地标

在前向地理编码请求的情况下,如果提供的信息产生多个可能的位置,则可能会返回多个地标对象。

然而,我的地标阵列永远只能有这一个项目:

[geocoderDestination geocodeAddressString:destination completionHandler:^(NSArray *placemarks, NSError *error){ 
NSLog(@"array count:%i", [placemarks count];} 

感谢您的任何帮助。


我用字符串,如“皮卡迪利大街,英国”,“联盟街,英国”已经只返回了一个结果。现在我想到了,把英国放在最后可能是促成因素。

+0

您可以添加您的示例字符串,以便其他人可以自行测试 – 2012-07-07 12:39:18

+0

完成,但我认为我已经意识到我的错误,现在哈哈哈。但问题是我需要的结果是英国特定的,并且使用geocodeAddressString:inRegion:不是很好,因为您必须指定半径,因此将包含一些爱尔兰。 – prince 2012-07-07 12:55:25

+0

好吧,这是采取小便,即使我使用CLLocationDistance distance1 = 750; CLRegion * region = [[CLRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake(53.825564,-2.421976)radius:distance1 identifier:nil];与geocodeAddressString:inRegion:然后它给了我一些地方在澳大利亚的“皮卡迪利”。 – prince 2012-07-07 13:13:37

回答

4

我不知道CLGeocoder,但如果您的要求是位置搜索另一种方式是使用谷歌位置搜索网址http://maps.google.com/maps/geo?q=london,它返回一个JSON包含匹配的位置信息。

+0

谢谢,我会在此期间使用它,因为我仍然无法实现此功能 – prince 2012-07-06 09:28:02

1

而不是UK使用United Kingdom它会给你一些相关的结果。
尝试在您的地址中添加更多信息。
还有一件事UK是不是一个有效的国家代码它是GB但似乎把GB而不是UK没有解决问题。
此外CLGeocoder现在不像Google Maps API那么聪明,因为苹果使用自己的服务器来解码地址,因此您可以使用Google服务。