ジオコーダに与えたアドレス([geocoder geocodeAddressString:completionHandler :)]は、常に目印アレイに1つのオブジェクトしか配置されません。CLGeocoderから複数の目印を取得する方法
私はそこからユーザーが1つを選択できる複数の結果(マップアプリのような)を得る方法はありますか?
ジオコーダに与えたアドレス([geocoder geocodeAddressString:completionHandler :)]は、常に目印アレイに1つのオブジェクトしか配置されません。CLGeocoderから複数の目印を取得する方法
私はそこからユーザーが1つを選択できる複数の結果(マップアプリのような)を得る方法はありますか?
私はパケットを盗聴しましたが、CLGeocoderはGoogleのジオコーディングサービスに接続するのではなく、Appleのものに接続するようです。私は毎回そこから目印を1つしか得られないことにも気づいた。
もっと洗練されたものをお望みなら、Googleなどのジオコーディングを使用する必要があります。私はSVGeocoder (https://github.com/samvermette/SVGeocoder)を使用しています。これは、CLGeocoderと非常によく似たAPIを持っています。
アップルのネイティブジオコーディングサービスはMapKit frameworkで提供されています。このフレームワークの重要なオブジェクトはMKLocalSearch
であり、アドレスをジオコーディングして複数の結果を返すことができます。
MKLocalSearchはの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 Docsから:前方ジオコーディングリクエストの場合、提供された情報が複数の可能な場所をもたらした場合、複数の目印オブジェクトが返されることがあります。 – prince
アップルのジオコーディングサービスは今のところかなり制限されていると思います。私はそれがすぐに変わると期待します。あなたは、AppleがここでGoogleへの依存から離れようと急いでいることが分かります。 –