現在、mapkit はフォワード ジオコーディング機能を提供していないため、検索バーを使用してユーザーが入力した住所から緯度と経度の座標を返す方法について誰か助けてもらえますか? 誰かがサンプルコードを提供できれば、それは素晴らしいことです。
7 に答える
iOS 5 では、フォワード ジオコーディングが可能になりました。
これが役立つことを願っています!
Google のジオコーディング サーバー用のフォワード ジオコーディング API を作成しました。私のブログ投稿をチェックしてください: http://blog.sallarp.com/ipad-iphone-forward-geocoding-api-google/
iOS 用のシンプルなフォワードおよびリバース ジオコーダー クラスであるSVGeocoderを作成しました。Google Geocoding API も使用し、MKPlacemarkを返します。
これは、住所文字列をジオコーディングする方法です。
NSString *addressString = @"3245 St-Denis, Montreal"
SVGeocoder *geocodeRequest = [[SVGeocoder alloc] initWithAddress:addressString];
[geocodeRequest setDelegate:self];
[geocodeRequest startAsynchronous];
そして、次のように CLLocationCoordinate2D オブジェクトをリバース ジオコーディングします。
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(45.54181, -73.62928);
SVGeocoder *rGeocoderRequest = [[SVGeocoder alloc] initWithCoordinate:coordinate];
[rGeocoderRequest setDelegate:self];
[rGeocoderRequest startAsynchronous];
SVGeocoderDelegate は、次の 2 つのメソッドを提供します。
- (void)geocoder:(SVGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark;
- (void)geocoder:(SVGeocoder *)geocoder didFailWithError:(NSError *)error;
github の iOS5 CoreLocation フレームワークで CLGeocoder を使用して、フォワード ジオコーディングとリバース ジオコーディングに関する小さな作業を行いました。 https://github.com/Mangesh20/geocoding
これは、MapKit の現在のバージョンの既知の問題です。バグレポートを提出し、#6628720 をだまして修正を優先させます。
それまでの間、 Google マップ、Yahoo Placemaker、またはCloudmadeからのフォワード ジオコーディング API があります。
ここにもフレームワークがあります: https://github.com/tylerhall/CoreGeoLocation
ドキュメントからのコメント: 主に Yahoo のジオコーディング サービスまたは Google の Geo API をラップする Objective GeoCoder および Reverse Geocoder。
MapKit にはそのような機能はありません。最善の方法は、サード パーティの Web サービスを呼び出すことです。Google にはこれを行うための API がいくつかあり、Yahoo にもあったと思います。どちらも商用利用には制限がありますので、契約書をお読みください。