14

更新: iPhone SDk 3.0 は現在、ここで質問に対処していますが、NDA により詳細な議論は妨げられています。詳細情報が必要な場合は、iPhone Dev Center にログインしてください。

わかりました、私はここで少し迷っていることを認めなければなりません。

私は Cocoa にかなり慣れていますが、この問題を解決するために必要な JavaScript のビットを拾うのに苦労しています。

リバース ジオ コードのリクエストを Google に送信しようとしています。

私はここで見た Google ドキュメントを調べました: http://code.google.com/apis/maps/documentation/index.html http://code.google.com/apis/maps/documentation/geocoding/

大まかに読んだ後でも、基本的な概念がありません。

Google に話しかけるにはどうすればよいですか。いくつかの例では、URL が Google に送信されていることを示しています (これは簡単に思えます) が、他の例では JavaScript を示しています。逆ジオコーディングのようです。リクエストは、いくつかのパラメーターを使用して URL を送信するよりも難しい場合があります (ただし、間違っていることを願っています)。

誰かがリクエストを行う正しい方法を教えてもらえますか? (Objective-Cでは、頭を包むことができます)

4

10 に答える 10

9

更新 - iPhone 0.3 には MapKit が含まれており、JS API を使用するよりも大幅に高速になることが期待されます。宣伝文句には、逆ジオコーディングが含まれると書かれています。

少なくとも Google API の条件内では、objective-C で直接リクエストを行うことはできません。Google API は Javascript で記述されています。Google マップ コンポーネントのように、objective-c から JS へのブリッジを使用することもできますが、それでも問題は解決しません。まだ JS 呼び出しを行っているのです。

残念ながら、それは、a) webview を使用する必要がある b) 遅い JS API を使用する必要があることを意味します... 完全に異なる OTA プロトコルを使用する Google マップ アプリケーションと比較してください (パケット スニッフィングを試してみてください)。

ただし、Google マップ コンポーネントは、API への簡単な呼び出しを行うための便利なチュートリアルです。

于 2009-02-19T14:49:07.100 に答える
4

iOS 用のシンプルなフォワードおよびリバース ジオコーダー クラスであるSVGeocoderを作成しました。Google Geocoding API を使用し、SVPlacemark オブジェクト (プロパティを持つサブクラス) を返し、ブロックを使用します。MKPlacemarkcoordinate

これは、住所文字列をジオコーディングする方法です。

[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
                }];
于 2011-02-12T02:05:34.683 に答える
3

Cocoa を使用して Google マップを取得する最も簡単な方法は、「静的マップ API」を使用することです。実際には、Google への連絡に使用する NSURL を準備する必要があります。マップを NSData として取得し、それを NSImage に変換します。ジオコーディングと逆ジオコーディングの両方を実行できることに注意してください。地図上にマーカーを埋め込むこともできます。ただし、JavaScript API を使用すると、アクセスできる完全なコントロールが失われます。

こちらのリファレンスガイドをご覧ください。

http://code.google.com/apis/maps/documentation/staticmaps/

于 2009-02-20T07:58:06.363 に答える
2

Apple が OS 3.0 用の MapKit API をリリースしたので、あなたの質問に対する回答が得られたと思います。API ドキュメントを見てみると、非常に多くの可能性があることがわかります。私はまだ Google の逆ジオコーディング Web サービスを見たいと思っていますが、当面は Yahoo がそうするでしょう。

于 2009-03-18T07:13:14.860 に答える
1

参考までに: XML によるリクエストに対する Google のリバース ジオコーディング API は公開されていないため、使用は違法です。唯一の合法的な方法は、JavaScript-API を使用することです。これは、Cocoa では単純に HTTP リクエストを送信するよりも難しいことがわかりました。

代替手段: 単純な XML/JSON リクエストによる逆ジオコーディングもGeonamesまたはYahooから入手できます。

于 2009-02-20T08:23:18.487 に答える
1

iOS5 以降、開発ドキュメントに記載されているように、次のオプションがあります。州、国情報. リバース ジオコーディングは、緯度と経度を目印に変換するプロセスです. フォワード ジオコーディングは、地名情報を緯度と経度の値に変換するプロセスです. リバース ジオコーディングは iOS のすべてのバージョンでサポートされていますが、フォワード ジオコーディングはサポートされていますは iOS 5.0 以降でのみサポートされます。"*

CLGeocoder オブジェクトを使用できるようになりました。

于 2011-11-23T09:03:44.993 に答える
0

実際には、リバース ジオコーディングを「ポイントを人間が読める住所に変換する」という意味ではなく、Google マップを使用してポイントを視覚化することを意味していました (精度レベルによっては、人間が読める住所を表示することもできます)。これは、必要とされた基本機能です。

実際には、静的マップ API をクリーンで高速な方法として提案したかっただけです。

1) iPhone の GPS センサーから取得した座標を指定して、その地点を示す Google マップを取得します。

2) 住所を指定して、対応する地理座標に変換し、その座標を使用して、指定された住所を示す Google マップを取得します。

どちらも、静的マップと地理サービスを含む単純な NSURL を使用して可能です

http://maps.google.com/staticmap ? http://maps.google.com/maps/geo ?

もちろん、適切なクエリ文字列を提供するために必要なパラメーターを渡します。

敬具

于 2009-02-20T10:59:31.827 に答える
0

google maps componentも見てみてください。

于 2009-02-16T09:09:26.743 に答える
0

もちろん、大きな問題は、Google と yahoo の両方のライセンス契約で、これらの API を「商用アプリケーション」で使用できないと規定されていることです。アプリ ストアでアプリを公開して、yahoo や google から削除され、訴えられるのは嫌です。iPhone 3.0 マップ API と関連するライセンスを読むと、これは言及されていませんが、アップグレードされていない電話でアプリを実行したい場合は....

トラブルに巻き込まれない答えはありますか?

于 2009-03-31T22:20:09.807 に答える