KMLをGoogle Maps上にマップする[再]
一年以上昔のことになりますが、Ajaxを使ってKMLをGoogle Maps上にマップする - Ogawa::Memorandaという記事を書きました。これはGoogle Maps APIの非同期読み込み機能を使って外部KMLファイルの内容をGoogleマップ上にマップするというものでした。
それから時は流れ、XML 2 JSON serviceを使ってFlickr Badgeを作る - Ogawa::Memorandaを書いた時点で、そうかそうかXML2JSONサービス(XML を JSON に変換するサービス - ベータ版を公開 :: Drk7jp)を使えば別に非同期読み込みを使わずとも(proxyなどを使わずとも)Javascriptだけでkml2gmapsは実現できるじゃんと気が付きました。
面倒なので長らく放置していましたがリハビリがてらやってみました。
上のURLではサンプルKMLファイルを読み込み、Google Maps APIを使ってマップ表示します。また、下のように「?url=」に続いてKMLファイルのURLを指定すればそのファイルをマップ表示します。
- http://as-is.net/maps/kml2gmaps-xml2json.html?url=http://as-is.net/maps/sample2.kml
(よく分かりませんがXML2JSONサービスが出力したJSONのcharsetを正常に認識できない問題があるっぽいので文字化けします)
さらにgeorss2kml.cgi: GeoRSSをGoogle Earthにマップするスクリプトを中継に使うことで、GeoRSSをGoogle Maps上にマップすることもできます。
XML2JSONサービスに食わすKMLファイルのContent-typeはtext/xmlやapplication/xmlでないと駄目っぽいかも。.htaccessに以下のように設定してあれば問題ないようですね。
AddType application/vnd.google-earth.kml+xml kml
あと、http://as-is.net/maps/sample.kml - Google マップ で済むがね、意味ないがねっていう話は言わない約束!!!
Comments and Trackbacks