web-dev-qa-db-ja.com

Google MapsAPIをiPhoneアプリに統合する

更新: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では、頭を包むことができます)

14
Corey Floyd

更新-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を簡単に呼び出す方法の便利なチュートリアルです。

9
Airsource Ltd

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
                }];
4
samvermette

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

ここで彼らのリファレンスガイドを見てください:

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

3
Massimo Cafaro

AppleがOS3.0用のMapKitAPIをリリースしたので、あなたの質問は答えられたと思います。APIドキュメントを見ると、多くの可能性があります。 Googleの逆ジオコーディングWebサービスを見たいのですが、それまではYahooが行います。

2
Ron Holmes

IOS5以降、開発ドキュメントに記載されているように、次のオプションがあります。* "ジオコーダーオブジェクトは、ネットワークサービスを使用して、緯度と経度の値と、通り、都市、都市などのデータのコレクションであるユーザーフレンドリーな目印を変換します。州および国の情報。逆ジオコーディングは、緯度と経度を目印に変換するプロセスです。順ジオコーディングは、地名情報を緯度と経度の値に変換するプロセスです。逆ジオコーディングは、iOSのすべてのバージョンでサポートされていますが、順ジオコーディングはサポートされています。 iOS5.0以降でのみサポートされています。」*

これで、CLGeocoderオブジェクトを使用できます。

1
doozMen

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

代替方法:単純なXML/JSONリクエストを使用した逆ジオコーディングは、 Geonames または Yahoo からも利用できます。

1

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

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

1)iPhone GPSセンサーから取得した座標を指定して、ポイントを示すGoogleマップを取得します

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

どちらも、staticmapサービスとgeoサービスを含む単純なNSURLを使用して可能です。

http://maps.google.com/staticmaphttp://maps.google.com/maps/geo

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

敬具

0
Massimo Cafaro

http://blog.cloudmade.com/2009/06/12/how-to-get-forward-geocoding-in-iphone-mapkit/

CloudMadeはオープンソースの地図/場所プロバイダーのようです-上記のブログ投稿には、ジオコーディングを進める方法の詳細が記載されています。

0
John

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

困らない答えはありますか?

0
wingspinner

グーグルマップコンポーネント も見てみてください。

0
Alfons