2009年06月22日

Google Maps に Flickr の Set を表示

pipesmap.jpg
Google マップ で表示

Flickr に写真をアップロードする際に位置情報を付けておくと、地図上で表示できたり、近くの写真を探せたりといろいろできるのだが、Flickr の地図は U.S. の Yahoo のものなので、日本の地図は非常にプア。
写真のセットごとに Google Maps に表示できればなあ、と Flickr の feed 出力でフォーマットを KML 指定して試してみたが、feed は20件までしか出力しないみたいなので、これもイマイチ。しかも写真が一番小さい Square になってしまう。

で、検索していたら、Yahoo Pipes を利用して 上限20件問題を回避している例がいくつかみつかったので、それを改造してKMLを吐き出せるようにしてみた。

Firebug で Flickr の地図画面を覗いてみたりしながら、ほとんど一から作りなおしたりして試行錯誤したのだけど、最終的には元になった Pipe (Flickr: photoset feed) に以下の赤丸内を付け足しただけになってしまった。
pipes1.png
feed にジオタグをつけ足したものを Location Extractor に食わせると、KML出力の実行オプションが現れるので、それを使うだけだった。ものすごく簡単。ずいぶん遠回りした。

Google Maps の検索窓に
http://pipes.yahoo.com/pipes/pipe.run?_id=3f0df592cd7af8e63eabe8af05226995&_render=kml&photoset_id=[セットのID]
を入れるとマッピングします。Flickr API の仕様上250件が上限みたいですが、そんなでかいセットもあんまりないだろうから、とりあえずそれ以上の件数を表示することは考えていません。

マッピングされたものを見ると、どうもFlickrが緯度経度の値を丸めてるみたいでグリッド状にならんでるけど、どうせGPSの精度なんてそんなもんだし、大体の位置が分かればいいやということで、これもとりあえずスルーです。
追記:緯度経度の値を丸めてるのはFlickrじゃなくてアップロードに使ったiPhotoみたいです。なんでそんなことするんだろ。

さらに追記:たまに以下のような画面が出て表示されないことがあるみたい。
notkml.jpg
Pipesのレスポンスが悪いとダメのかな?。