画像の 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]+)_/);はじめに、画像の URL から 画像 ID を切り出して取得する必要があります。画像の URL パターン は決まりがありますので、その決まりの正規表現を使って、画像 ID を取得しています。
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
));
});
}
次に、その画像 ID を指定して、Flickr API の flickr.photos.geo.getLocation メソッドを実行します。このとき format に JSON 形式を指定して、さらに jsoncallback にコールバック関数の名前を指定しています。なお、コールバック関数の名前は、jQuery JSONP プラグインが内部で自動的に払い出します。
指定した画像 ID の画像があり、かつその画像に緯度経度が付与されているときは、flickr.photos.geo.getLocation メソッドの実行結果に photo オブジェクトが含まれます。そして、その photo オブジェクトは location オブジェクトを含むので、そのプロパティから緯度経度を取得します。
最後に、Google Maps API を使って、取得した緯度経度が地図の中心になるようにしています。
0 件のコメント:
コメントを投稿