Google MapsのKMLを触ってみた

Google MapsのマイマップからRSSが無くなっていたので、社内用SkypeBotをRSSからKMLへ変更してみた。
その時いくつかハマったのでメモ代わりに書き残す。
KMLのパースにはElementTreeを使った。
コードはこんな感じ。

import urllib2
from xml.etree import ElementTree

KML_FEED = 'http://maps.google.com/maps/ms?msid=[MSID]&output=kml'
NAMESPACE = 'http://earth.google.com/kml/2.2'

xml = ElementTree.parse(urllib2.urlopen(KML_URL))
entries = xml.findall('.//{%s}Placemark' % NAMESPACE)


ハマった点

  1. KMLにはIDがないので吹き出しを表示するURLを生成出来なくなってしまった。
  2. Google MapsのURLにあるllパラメータは北緯、東経の順なのに、KMLのcoordinatesタグは東経、北緯の順だった。
  3. ネームスペースを指定しないとタグを取って来れなかった。

KMLファイルをエディタで見てもネームスペースは書いてないので

xml.getroot().tag

で根エレメントのネームスペースを確認して、それを指定する必要があった。


結局1は解決出来ていないので、吹き出しを表示するURLの作り方を知ってる人は教えてください。