KMLファイルを使えばGoogleMapsのマーカー設定とかが凄い簡単にできるっていう話。
KMLはXMLのように書式が決まってて手打ちはだいぶややこしいんだけど、GoogleEarth使えば簡単に作れる。
GooleEarthを開くと左側に「場所」ってのがあって、マークされた目印とかが表示されていると思う。
デフォルトだとお気に入りの中に観光ツアーというモノがあります。
自分でポチポチマーキングしてもいいんだけど、手順を解説するのは本題から外れるので割愛。
詳しくはマニュアル参照で。
「場所」タブの横にあるコンテンツを追加を押すと、ユーザーが作ったデータをギャラリーからインポート出来る。
とりあえずサンプルとして28日間で日本一周を読み込でみると、保留って所に表示されると思う。
そしたら一番親のタイトルの所を右クリックして「名前をつけて場所を保存」を選ぶ。
ファイルタイプでkmlを選べばkmlファイルがエクスポートされます。
Google Maps APIでのKMLファイルのロード
前の手順でエクスポートしたkmlファイルを使えば、埋め込んであるGoogleMapsにGoogleEarthの情報をそっくりそのまま表示出来る。
Maps API V2
V2はDeprecatedになってるんだけど一応書いておく。
new geoXml = new google.maps.GeoXml("KMLファイルのアドレス"); map.addOverlay(geoXml);
GGeoXmlクラスはKMLファイルを読み込むとGOverlayオブジェクトを返すので、addOverlayするだけでデータが反映されるわけです。
クリックとかinfowindowとかの設定は何もいらないし、アイコンはEarthで「場所のプロパティ」で設定すればそれが使用される。
Maps API V3
軽くV3について説明しとくと
- APIキーが不要になった
- モバイル端末とかの位置情報に対応
- MVCフレームワーク改良で中身が激変
こんな感じで、いろいろ変わってます。
基本ソース:
<html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>Google Maps JavaScript API v3 Example: KmlLayer KML</title> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> function initialize() { var chicago = new google.maps.LatLng(41.875696,-87.624207); var myOptions = { zoom: 11, center: chicago, mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); } </script> </head> <body style="margin:0px; padding:0px;" onload="initialize()"> <div id="map_canvas" style="width:100%; height:100%"></div> </body> </html>
V3でも上のGeoXmlが使えるんだけど、非推奨なんでV3のKmlLayerクラスを使う。
var ctaLayer = new google.maps.KmlLayer('KMLファイルのアドレス'); ctaLayer.setMap(map);
GoogleのサンプルにFlickerのRSSを読み込んでるマップがあるように
KML形式であれば他のサービスが提供するデータも使えるので便利。
「Google MapsにKMLのデータを表示する (v2,v3)」への1件のフィードバック