更新:iPhone SDk 3.0はここでの質問に対処するようになりましたが、NDAは詳細な議論を妨げます。詳細が必要な場合は、iPhone DevCenterにログインしてください。
わかりました、私はここで少し迷っていることを認めなければなりません。
私はCocoaにかなり満足していますが、この問題を解決するために必要なJavaScriptのビットを取得するのに問題があります。
逆ジオコードのリクエストをGoogleに送信しようとしています。
ここで表示したGoogleのドキュメントを確認しました: http://code.google.com/apis/maps/documentation/index.htmlhttp://code.google。 com/apis/maps/documentation/geocoding /
大まかに読んだ後でも、基本的な概念が欠けています。
グーグルとどのように話しますか?いくつかの例では、それらはグーグルに送信されているURLを示しています(これは十分に簡単に思えます)が、他の例ではそれらはjavascriptを示しています。逆ジオコーディングのようですが、リクエストはいくつかのパラメータを含むURLを送信するよりも難しい場合があります(ただし、間違っているといいのですが)。
誰かが私にリクエストを行う正しい方法を教えてもらえますか? (Objective-Cでは、頭を包むことができます)
更新-iPhone0.3にはMapKitが含まれています。これは、JSAPIを使用するよりも大幅に高速になることを願っています。宣伝文句は、逆ジオコーディングが含まれることを示しています。
少なくともGoogleAPIの条件の範囲内では、Objective-Cで直接リクエストを行うことはできません。 GoogleAPIはJavascriptで書かれています。 Google Maps Component のように、Objective-cからJSへのブリッジを使用することもできますが、それでも問題は解決しません。まだJS呼び出しを行っています。
残念ながら、それはあなたがa)ウェブビューを使用する必要があることを意味しますb)遅いJS APIを使用する必要があります...完全に異なるOTAプロトコルを使用するGoogleマップアプリケーションと比較してください(パケットスニッフィングを試してください)。
ただし、Google Maps Componentは、APIを簡単に呼び出す方法の便利なチュートリアルです。
IOS用の単純なフォワードおよびリバースジオコーダークラスである SVGeocoder を作成しました。 Google Geocoding APIを使用し、SVPlacemarkオブジェクト(MKPlacemark
プロパティを持つcoordinate
サブクラス)を返し、ブロックを使用します。
これは、住所文字列をジオコーディングする方法です。
[SVGeocoder geocode:addressString
completion:^(NSArray *placemarks, NSError *error) {
// do something with placemarks, handle errors
}];
次のように座標を逆ジオコーディングすることもできます。
[SVGeocoder reverseGeocode:CLLocationCoordinate2DMake(45.53264, -73.60518)
completion:^(NSArray *placemarks, NSError *error) {
// do something with placemarks, handle errors
}];
Cocoaを使用してGoogleマップを取得する最も簡単な方法は、「StaticMapsAPI」を使用することです。実際には、Googleへの連絡に使用するNSURLを準備する必要があります。マップをNSDataとして取得し、NSImageに変換します。ジオコーディングと逆ジオコーディングの両方を実行できることに注意してください。地図にマーカーを埋め込むこともできます。ただし、JavaScript APIを使用すると、アクセスできる完全なコントロールが失われます。
ここで彼らのリファレンスガイドを見てください:
AppleがOS3.0用のMapKitAPIをリリースしたので、あなたの質問は答えられたと思います。APIドキュメントを見ると、多くの可能性があります。 Googleの逆ジオコーディングWebサービスを見たいのですが、それまではYahooが行います。
IOS5以降、開発ドキュメントに記載されているように、次のオプションがあります。* "ジオコーダーオブジェクトは、ネットワークサービスを使用して、緯度と経度の値と、通り、都市、都市などのデータのコレクションであるユーザーフレンドリーな目印を変換します。州および国の情報。逆ジオコーディングは、緯度と経度を目印に変換するプロセスです。順ジオコーディングは、地名情報を緯度と経度の値に変換するプロセスです。逆ジオコーディングは、iOSのすべてのバージョンでサポートされていますが、順ジオコーディングはサポートされています。 iOS5.0以降でのみサポートされています。」*
これで、CLGeocoderオブジェクトを使用できます。
実際、私は逆ジオコーディングを「ポイントを人間が読める形式の住所に変換する」ことを意味するのではなく、Googleマップを使用してポイントを視覚化することを意味しました(精度レベルによっては、人間が読める形式の住所を表示することもできます)。これが必要だった基本的な機能です。
実際には、静的マップAPIをクリーンで高速な方法として提案したかっただけです。
1)iPhone GPSセンサーから取得した座標を指定して、ポイントを示すGoogleマップを取得します
2)指定された住所を対応する地理座標に変換し、その座標を使用して、指定された住所を示すGoogleマップを取得します
どちらも、staticmapサービスとgeoサービスを含む単純なNSURLを使用して可能です。
http://maps.google.com/staticmap ? http://maps.google.com/maps/geo ?
もちろん、適切なクエリ文字列を提供するために必要なパラメータを渡します。
敬具
http://blog.cloudmade.com/2009/06/12/how-to-get-forward-geocoding-in-iphone-mapkit/
CloudMadeはオープンソースの地図/場所プロバイダーのようです-上記のブログ投稿には、ジオコーディングを進める方法の詳細が記載されています。
もちろん、大きな問題は、グーグルとヤフーの両方のライセンス契約では、これらのAPIを「商用アプリケーション」で使用できないと述べていることです。アプリストアでアプリを公開するのは嫌いで、yahooやgoogleにアプリを削除して訴えさせるだけです。 iPhone 3.0マップAPIと関連ライセンスを読む際にこれは言及されていませんが、アップグレードされていない電話でアプリを実行したい場合は...
困らない答えはありますか?
グーグルマップコンポーネント も見てみてください。