JavaScriptだけで地図の上にTwitterのつぶやきを表示する:マピオンラボ(Javascript) を参考にして、 YOLP JavaScriptマップAPI を使って地図上に Twitter のつぶやきを表示してみた。
⇒ 地図上で位置情報ツイート検索
参考までに、 JavaScript のコードをここに抜粋。
var map; // 地図
var tweets = {}; // ツイートがすでに地図上にあるかチェック用(key=id_str)
window.onload = function() {
// 地図初期化
map = new Y.Map("map", {
configure : {
doubleClickZoom : false,
scrollWheelZoom : true,
singleClickPan : true,
dragging : true
}
});
map.addLayerSet(Y.LayerSetId.EARTHQUAKEPHOTO, new Y.LayerSet('震災後写真', [new Y.EarthQuakePhotoLayer()]));
// 最初の場所
map.drawMap(new Y.LatLng(35.68972384783109, 139.70025644779037), 12);
// 地図上にいろんなコントロールを追加
map.addControl(new Y.ScaleControl());
map.addControl(new Y.LayerSetControl());
map.addControl(
new Y.SliderZoomControlVertical(),
new Y.ControlPosition(Y.ControlPosition.TOP_RIGHT, new Y.Size(50, 50))
);
map.addControl(
new Y.SearchControl(),
new Y.ControlPosition(Y.ControlPosition.TOP_LEFT, new Y.Size(0, 0))
);
map.addControl(
new Y.AddressCategoryControl(),
new Y.ControlPosition(Y.ControlPosition.BOTTOM_LEFT, new Y.Size(0, 0))
);
// ダブルクリックでツイート検索
map.bind('dblclick', twitterSearch);
}
function twitterSearch(latlng) {
// JSONPなツイート検索
var url = "http://search.twitter.com/search.json?geocode=" + latlng.lat() + "," + latlng.lng() + ",10km&rpp=100&callback=twitterCallback";
// 古いの消さなきゃ・・・
var searchtweetsid = "searchtweets";
var old = document.getElementById(searchtweetsid);
if(old){
document.getElementsByTagName('head')[0].removeChild(old);
}
// 新しいの作らなきゃ・・・
var script = document.createElement("script");
script.id = searchtweetsid;
script.src = url;
script.type = "text/javascript";
document.getElementsByTagName('head')[0].appendChild(script);
}
function twitterCallback(e) {
//map.clearFeatures(); // 検索するたびに前の検索結果を消すならこれ
if (e && e.results) {
for (var i = 0, len = e.results.length; i < len; i++) {
var result = e.results[i];
// 位置情報を持っているか
if(result.geo){
// すでに地図上に存在するツイートは追加しない
if(!tweets[result.id_str]){
// Twitterのアイコンを表示
var icon = new Y.Icon(e.results[i].profile_image_url);
var marker = new Y.Marker(new Y.LatLng(result.geo.coordinates[0], result.geo.coordinates[1]), {icon: icon});
// クリックされたときにフキダシを表示
marker.bindInfoWindow("<div>" + result.text + "</div>");
// 地図上に追加
map.addFeature(marker);
// 地図上に存在するツイート一覧にツイートIDを追加
tweets[result.id_str] = result.id_str;
}
}
}
}
}
サーバ側のコードを書かないで JavaScript でここまでできるなんて便利。
Ref.
- JavaScriptだけで地図の上にTwitterのつぶやきを表示する:マピオンラボ(Javascript)
- Yahoo!デベロッパーネットワーク - YOLP(地図) - JavaScriptマップ
- GET search | Twitter Developers
tags: twitter yahoo_maps_api location
Posted by NI-Lab. (@nilab)