2

我尝试使用 Apple GeoCoderDemo 进行前向地理编码。我尝试使用“Walmart Michigan”,与设备上的苹果本地地图应用程序相比,返回的结果完全不同。

搜索 stackOverflow 后,我知道 CLGeocoder 只能进行地址搜索而不是地址/企业名称搜索,这意味着它正在寻找包含密歇根州沃尔玛的街道名称。

但我很想知道为什么苹果的原生地图可以完美地完成这项工作。有谁知道其中的秘密?

感谢所有帮助。

4

1 回答 1

2

在 iOS 6.1 中,Apple 向我们MKLocalSearch展示了真正的搜索功能,类似于 Maps 应用的功能。例如:

MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = @"restaurant";
request.region = mapView.region;

MKLocalSearch *localSearch = [[MKLocalSearch alloc] initWithRequest:request];
[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {

    NSMutableArray *annotations = [NSMutableArray array];

    [response.mapItems enumerateObjectsUsingBlock:^(MKMapItem *item, NSUInteger idx, BOOL *stop) {
        CustomAnnotation *annotation = [[CustomAnnotation alloc] initWithPlacemark:item.placemark];
        annotation.title = item.name;
        annotation.phone = item.phoneNumber;
        annotation.subtitle = item.placemark.addressDictionary[(NSString *)kABPersonAddressStreetKey];
        [annotations addObject:annotation];
    }];

    [self.mapView addAnnotations:annotations];
}];
于 2013-02-27T21:58:05.077 回答