やりたいこと
いまさらですけど、Google Maps APIを使用する目的を簡単にまとめてみます。簡潔に言えば、人の移動をわかりやすい形で可視化することです。移動中に記録したログに含まれている位置情報(緯度、経度)を取り出し、それをGoogle Map上にインポートして表現することが最終的な目的です。
さて、ずっと悩んでいたのが、位置情報をどの様なフォーマットに変換して取り出すかということです。Google Maps Japascript APIのガイドやサンプルを読んでいくと、GeoJSON、KMLに関する記述が見つかります。
KML、GeoJSONの簡単な説明は以下の通りです。
KML
XMLフォーマットをベースとして、地理データを表現するためのフォーマットです。Google Earthでも使用できます。詳しくはKMLのチュートリアルを参照して下さい。仕様はKML | OGCに記載されています。
GeoJSON
こちらは、JSONフォーマットをベースとして地理データを表現するフォーマットです。仕様はGeoJSONに記載されています。GeoJSONのフォーマットについては、Wikipediaの記載が簡潔で理解しやすいので、まずは何ができるのかを知りたいかたは、
GeoJSON - Wikipediaも参照してみて下さい。
さて、KML、GeoJSONに関するサンプルをテストしてみたのですが、、、
マップへのデータのインポート
KML Layers
Data Layer: Simple
Data Layer: Drag and Drop GeoJSON
ローカル環境からKMLファイルを取り込むことが出来ません。サンプル内に記載されているKMLファイルのリンク先をローカル環境に置き換えても正常に読み込みが行われません。
KML レイヤと GeoRSS レイヤに以下のような記載があります。
Google Maps JavaScript API は、地理情報を表示するために KML および GeoRSS データ形式をサポートします。これらのデータ形式は、KmlLayer オブジェクトを使用してマップ上に表示されます。このオブジェクトのコンストラクタは公開されてアクセス可能な KML または GeoRSS ファイルの URL を受け取ります。
公開されてアクセス可能な KML または GeoRSS ファイルの URLが必須、つまり仕様ということなんでしょうか。ちなみに、Google Earthはローカル環境のKMLファイルをインポートできます。うーん、理由はよくわかりません。
サーバーへのアクセス、KMLファイルのサーバーへのアップロードが必要となると、ちょっとお仕事で使う場合には敷居が高いかなという気がします。ということで、後はGeoJSONフォーマットを利用する前提で話を進めて行きます。