GoogleマイマップをKMLにするブックマークレット
マイマップtoKML←これをしかる場所にドラッグ、または普通にブックマークで登録完了。
あとは、グーグルマップでマイマップを表示しているときに、登録したマップレットtoKMLをクリックするだけ。
ソースコードはこちら。
(function(){
if(document.getElementById('view_kml')){
var url = document.getElementById('view_kml').href;
var param = url.substring(url.indexOf('?'), (url.length));
param = param.match(/msid=\w+\.\w+/);
window.location.href = url.substring(0, url.indexOf('?')) + '?msa=0&output=kml&ge_fileext=.kml&' + param;
}})();
現在でも、マイマップを開くと「KML」のアイコンがあり、そこをクリックするとKMLがダウンロードできるが、ここでダウンロードできるKMLは、内部でなにやら別リンクを呼び出しているだけ。
大事な地点情報などは一切含まれていない。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>Tokyo Marathon 2007</name>
<description><![CDATA[Tokyo marathon course map]]></description>
<NetworkLink>
<Url>
<name>Tokyo Marathon 2007</name>
<href>http://maps.google.co.jp/maps/ms?ie=UTF8&hl=ja&msa=0&msid=103763259662194171141.00000111aa92b8b7b23c6&output=kml</href>
</Url>
</NetworkLink>
</Document>
</kml>
この中身に記載されたURLはアクセスしても
{errorText:"サーバーに接続できません。"}
と怒られてブラウザではアクセスできないことがわかる。
が、少し細工するとアクセスできるようになるどころか、KMLファイルとして直接ダウンロードできるようになる。
しかけは以下の通り。
- KML、または「このページのリンク」のURLを取得
- URLのパラメータを「msa=0、msid=~~」以外、削除
- URLのパラメータに「output=kml」と「ge_fileext=.kml」を追加
before
http://maps.google.co.jp/maps/ms?ie=UTF8&hl=ja&msa=0&output=nl&msid=103763259662194171141.00000111aa92b8b7b23c6after
http://maps.google.co.jp/maps/ms?msa=0&output=nl&msid=103763259662194171141.00000111aa92b8b7b23c6&output=kml&ge_fileext=.kmlというわけで、Googleマップでマッシュアップをつくる下準備なんかにぜひ役立てていただきたい。
参考

