无论我给地理编码器提供什么地址([geocoder geocodeAddressString:completionHandler:]),它总是只在placemarks数组中放置一个对象。
有没有办法获得多个结果(就像Maps应用程序中那样),让用户选择一个?
有没有办法获得多个结果(就像Maps应用程序中那样),让用户选择一个?
苹果的原生地理编码服务由MapKit框架提供。该框架中的重要对象是MKLocalSearch
,它可以将地址进行地理编码并返回多个结果。
MKLocalSearch
在mapItems
中返回10个MKMapItem
类型的结果。每个MKMapItem包含一个MKPlacemark
对象,这是CLPlacemark
的子类。
以下是使用MapKit的MKLocalSearch
的示例:
MKLocalSearchRequest* request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = @"Calgary Tower";
request.region = MKCoordinateRegionMakeWithDistance(loc, kSearchMapBoundingBoxDistanceInMetres, kSearchMapBoundingBoxDistanceInMetres);
MKLocalSearch* search = [[MKLocalSearch alloc] initWithRequest:request];
[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
yourArray = response.mapItems; // array of MKMapItems
// .. do you other logic here
}];