YahooとGoogleの地図を行ったり来たりしたい。

Yahoo Mapsと、Google Mapsとでは、違う情報が載っていて両方を見たくなることがよくある。毎回スクロールさせて位置を合わせるのが面倒なので、bookmarkletを作ってみた。

Y2G 表示しているYahoo Mapsの場所をGoogle Mapsで開く。

javascript:var bm_ymap=$ctrl.getMap();var bm_YLL=bm_ymap.getCenter();var bm_u=’http://maps.google.co.jp/maps?hl=ja&z=15&tab=wl&ll=’+bm_YLL;var bm_w=window.open(bm_u, ‘_blank’);

G2Y 表示しているGoogle Mapsの場所をYahoo Mapsで開く。

javascript:var bm_u=window.location.search;var bm_pos=bm_u.search(/&ll=/);if(bm_pos!=1){var bm_u=bm_u.substring(bm_pos+4);var bm_pos=bm_u.search(/&/);if(bm_pos!=-1){var bm_u=bm_u.substring(0,bm_pos)};var bm_ll=bm_u.split(‘,’);var bm_u=’http://map.yahoo.co.jp/pl?&mode=map&type=scroll&z=15&lat=’+bm_ll[0]+’&lon=’+bm_ll[1];var bm_w=window.open(bm_u, ‘_blank’)};

はじめてjavascriptを使ってみた。検索すれば大体のことはわかるので、わりと簡単にできた。大昔の1行プログラムのように汚らしくなったが、FireFox 3、Chrome 3、IE8でそれらしい動きをする。

Yahoo MapsはYahooMapsCtrlに触れたので、なんとなくまとも。

Google MapsはURIから力任せに緯度経度を取っているので、美しくない。スクロールさせたあとは、Google Mapsの右上にある「リンク」を押して表示されるURLで開き直さないと、表示されている地図の位置にならないが、いいことにする。あと、あまりセキュアじゃない。

どちらも、地図サイトの仕様が変わったら動かなくなると思う。移動するたびに微妙に位置がずれるが、深く追求せずに見失わない程度のズームに固定して逃げ。

はまったところ。変数に全部 var をつけているのは、元のページの遷移を避けるため。var をつけないと変数がグローバルスコープになるようで、返り値が表示されてしまう。このへん、そのうち調べておくといいかもしれない。

正しいやり方かわからないが、それなりに便利になった。ルートラボとかに飛べればもっと便利だが、Yahoo側でどうにかなるのに期待。

# 半日遊んでしまって今日も掃除が進まなかった。

コメントをどうぞ