2011-12-16 6 views
1

まず、2点間のルートを見つけて出力するには、Google map apiが必要です。 私は方向のリクエスト出力をjsonとxml出力でしか見ることができません。私はkmlを見ない。Google Maps API、KMLファイル、AppleのKMLViewerの関係

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

http://maps.googleapis.com/maps/api/directions/jsonこれは動作します!

http://maps.googleapis.com/maps/api/directions/kmlこれは機能しません。

アップルのKMLViewerはKMLファイルを受け取り、そのルートをGoogleマップのオーバーレイ上に重ねて表示します。

http://developer.apple.com/library/ios/#samplecode/KMLViewer/Introduction/Intro.html

私は、iPhone上のディスプレイとしてAppleのKMLViewerを使用することを計画しています。しかし、KMLファイルが必要です。

ただし、GoogleマップAPIはKMLファイルを出力しません。

私はこれにどのようにアプローチすればよいですか?

+1

[ReadMe.txtファイル](http://developer.apple.com/library/ios/#samplecode/KMLViewer/Listings/ReadMe_txt.html%23//apple_ref/doc/uid/DTS40010046- ReadMe_txt-DontLinkElementID_9)をKMLViewerプロジェクトに追加しますか? 'Add&output = kmlをurl'の部分の最後まで動かさないのですか? – Anna

+0

いいえ、http://maps.googleapis.com/maps/api/directions/json? { "routes":[]、 "status": "REQUEST_DENIED" } kmlを試してみると、http://maps.googleapis.com/maps/api/directions/kml? 404.それはエラーです。 要求されたURL/maps/api/directions/kmlがこのサーバーに見つかりませんでした。それだけで私たちは知っている。 – lilzz

+0

ReadMeファイルの手順に必ず従ってください。次に、このようなURLを取得します: 'http://maps.google.com/maps?saddr=451+University+Avenue,+Palo+Alto,+CA+94301&daddr=1+Infinite+Loop,+Cupertino,+CA + 95014&output = kml' – Anna

答えて

1

2つのアプローチがあります - アップルが文書化した非公式の&出力= kmlトリックを使用することも、ウェブサービスAPIを使用してKMLビット全体をスキップすることもできます。

技術的には自分のKMLファイルを作成してKMLViewerにロードするために、あなたが言及したJSONまたはXML出力を使用できますが、これは問題を解決するためのラウンドアバウトの方法だと思います。

Googleから得られるJSON/XMLで最も気になる具体的な出力は、おそらくコード化されたポリラインを含むpolyline.points要素です。その文字列をデコードするアルゴリズムは、いくつかのサンプル実装ではhereです。これらのデコードされたポイントを緯度/経度のポイントに簡単に使用して、ルートの各レッグにオブジェクトMKPolylineを作成するか、APIの概要ポリラインを使用してルートの概算を取得できます。独自のKMLルートを構築するには、ルートの各レグにKMLファイルの要素linestringを使用します。

関連する問題