無論我給地理編碼器的任何地址([geocoder geocodeAddressString:completionHandler :)),它總是隻在地標數組中放置一個對象。如何從CLGeocoder獲取多個地標
我有沒有辦法獲得多個結果(如在地圖應用程序),用戶可以從中選擇一個?
無論我給地理編碼器的任何地址([geocoder geocodeAddressString:completionHandler :)),它總是隻在地標數組中放置一個對象。如何從CLGeocoder獲取多個地標
我有沒有辦法獲得多個結果(如在地圖應用程序),用戶可以從中選擇一個?
我已經對數據包進行了一些嗅探,似乎CLGeocoder沒有連接到Google的地理編碼服務,而是連接到Apple的。我也注意到,每次只有一處地標。
如果你想要更復雜的東西,你應該使用谷歌或其他地理編碼。我使用SVGeocoder (https://github.com/samvermette/SVGeocoder),它有一個非常類似於CLGeocoder的API。
由MapKit framework提供Apple的原生地理編碼服務。該框架中的重要對象是MKLocalSearch
,它可以對地址進行地址解析並返回多個結果。
MKLocalSearch返回MKMapItem
類型的mapItems
中的10個結果。每個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
}];
我們使用了http://blog.sallarp.com代替SVGeocoder – johsem
正向Geaocoder爲什麼會出現這種情況?從Apple文檔:在前向地理編碼請求的情況下,如果提供的信息產生了多個可能的位置,則可能會返回多個地標對象。 – prince
我想蘋果的地理編碼服務目前非常有限。我預計它會很快改變。你可以看到,蘋果只是急於擺脫對Google的依賴。 –