我尝试使用 Apple GeoCoderDemo 进行前向地理编码。我尝试使用“Walmart Michigan”,与设备上的苹果本地地图应用程序相比,返回的结果完全不同。
搜索 stackOverflow 后,我知道 CLGeocoder 只能进行地址搜索而不是地址/企业名称搜索,这意味着它正在寻找包含密歇根州沃尔玛的街道名称。
但我很想知道为什么苹果的原生地图可以完美地完成这项工作。有谁知道其中的秘密?
感谢所有帮助。
我尝试使用 Apple GeoCoderDemo 进行前向地理编码。我尝试使用“Walmart Michigan”,与设备上的苹果本地地图应用程序相比,返回的结果完全不同。
搜索 stackOverflow 后,我知道 CLGeocoder 只能进行地址搜索而不是地址/企业名称搜索,这意味着它正在寻找包含密歇根州沃尔玛的街道名称。
但我很想知道为什么苹果的原生地图可以完美地完成这项工作。有谁知道其中的秘密?
感谢所有帮助。
在 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];
}];