GoogleマップのマイマップからFusion Tablesへの移行

昨年から告知されていたようにGoogleマップのマイマップAPIが廃止されてしまったので、API経由で同様のことをやるには今後はFusion Tablesを使う必要があります。Fusion Tablesは便利なんですけど、PC上での既存のマイマップからのデータの移行が以前試したときはうまくできなかったので、やり方を確認して再度チャレンジしてみました。

結論から言えばKML経由でできるんですが、スタイルやアイコンのデータが引き継がれません。簡単なパーサを書くだけで良さそうなんですが、Fusion Tables側の地図表示が対応していない部分もあるような感じで、もう少し調べる必要あり。
あと、Fusion Tableのデータをマップ上で編集するには「My Map Editor」というツールが公開されているのですが、まだベータ版で、マーカーが置けるだけでパスを作ったりはできないので、マイマップの編集能力には遠く及ばない感じです。GoogleはマイマップからFusion Tablesへの移行を推奨しているけど、自分でプログラム書いていじる分にはいいけど、ビジュアルな編集が不十分では片手落ちではないかなあ。

以下、マイマップのデータをFusion Tablesに移行する方法です。スクリーンショット多めで。
まずこんな感じのマイマップがあるとします。上部の[Google Earthで表示]をクリックしKMLファイルをダウンロードします。

このKMLファイルをそのままFusion Tablesにアップロードしようとしても駄目です。このファイルの中身は次のような感じになっていて、このLinkのこところのhrefに書かれているURLが、KMLの本体データのあるURLということになります。

ただし、"&"が"&"になっているので、Webブラウザでアクセスする前にこれを直しておく必要があります。

ダウンロードしたKMLファイルはこんな感じです。

これをFusion Tablesにインポートします。Fusion Tablesの[Owned by me]タブを開いて、左上の[New table]から[Import table]を選びます。

KMLファイルを指定して[Next]をクリック。

こんな感じでテーブルがインポートできます。ここは特に変更の必要はありません。カラムが3つありますが、よく見るとスタイルやアイコンの情報が抜けてしまっていることがわかります。

タイトルは分り易いものをつけておきましょう。

インポートが成功したら、テーブルが表示されるはずです。地図形式で見るには、Fusion Tablesの[Visualize]メニューから[Map]を選択します。データが間違っていなければ、次のように地図上にマーカーが表示されます。

しかし、このままだとMy Maps Editorでロードすることができず、地図上でのデータの編集ができません。My Maps Editorでロードできるようにするためにはカラムを2つほど追加してあげればいいようです。追加するカラム名は「style」と「M_icons_url」で、データ型はいずれもTEXTです。カラムの追加は、[Edit]メニューから[Add clumn]で行います。


カラムを追加するとMy Maps Editorでデータを読み込めるようになり、次のようにマーカーが表示されます。マーカーを移動したり追加したりすることもできます。styleやM_icon_urlに自分で値を入れてやれば表示が変わるかと思ったのですが、うまくできませんでした。データ形式などを調べる必要がありそうです。

さて、上の例ではマイマップのデータにルート情報(KMLデータ上ではLineString要素)を含んでいなかったのですが、ルート情報を含む場合にもインポートは可能です。下の図は、先程のマイマップにGPSのトラッキングログを追加したデータをインポートしたものです。元のデータではルートの色は水色にしてあったはずので、相変わらずスタイルは継承されていません。

このテーブルをMy Maps Editorで読み込ませたらひどいことになってしまいました。My Maps Editorは編集だけでなく表示部分でもまだルート情報には対応していないようです。

試しにルートのstyleの値を変えてみました。Fusin Tables上での表示は変わらなかったのですが、My Maps Editorではちゃんと反映されました。

とりあえず、こんなところです。テーブルのインポート自体はう成功しているので、スタイルやアイコンのデータ形式を調べた上で、インポート時に情報が消えないようなパーサを作ってあげれば何とかなりそうではあります。