2008-04-03

Flickr API を使って、画像に付与された緯度経度を取得する方法

The geo microformat 生成ツールを公開しました
画像の URL を入力したときは、Flickr API を使って、画像に付与された緯度経度を取得して、その結果から HTML を生成します。ですので、指定できる URL は、Flickr の画像、かつ緯度経度(geoタグ)が付与された画像に限ります。
Flickr API を使って、画像に付与された緯度経度を取得する方法を紹介します。

そのソースコードは、次のとおりです。jQuery と jQuery JSONP プラグイン を使っています。
  var test = c.match(/^http:\/\/farm[0-9]+\.static\.flickr\.com\/[0-9]+\/([0-9]+)_/);
if (test) {
var url = 'http://api.flickr.com/services/rest/?jsoncallback={fn}&' +
$.param({
method: 'flickr.photos.geo.getLocation',
api_key: '(API Key)',
photo_id: test[1],
format: 'json'
});
$(document).jsonp(url, function(json) {
if (json.photo)
map.panTo(new GLatLng(
json.photo.location.latitude,
json.photo.location.longitude
));
});
}
はじめに、画像の URL から 画像 ID を切り出して取得する必要があります。画像の URL パターン は決まりがありますので、その決まりの正規表現を使って、画像 ID を取得しています。

次に、その画像 ID を指定して、Flickr API の flickr.photos.geo.getLocation メソッドを実行します。このとき format に JSON 形式を指定して、さらに jsoncallback にコールバック関数の名前を指定しています。なお、コールバック関数の名前は、jQuery JSONP プラグインが内部で自動的に払い出します。

指定した画像 ID の画像があり、かつその画像に緯度経度が付与されているときは、flickr.photos.geo.getLocation メソッドの実行結果に photo オブジェクトが含まれます。そして、その photo オブジェクトは location オブジェクトを含むので、そのプロパティから緯度経度を取得します。

最後に、Google Maps API を使って、取得した緯度経度が地図の中心になるようにしています。

0 件のコメント: