Googleマップ⇒MapionMateのブックマークレットを更新した



いつの間にやらGoogleマップの内部処理が変わっていて従来の 「Googleマップ⇒MapionMateのブックマークレット」 が使えなくなっていたので更新しました。
これまで通りborbisのホームページに置いてありますが、ここにも掲載しておきます。

Googleマップ⇒MapionMateのブックマークレット(2007-02-20版)

このブックマークレットは、 W-ZERO3Opera Mobile , NetFront と PC の Opera , Firefox で動作を確認しています。(2008-11-16追記:Googleマップが変わってしまったので動きません。↓の新しい版を使ってください。)

javascript:(function(){var M,X;if((M=unescape(location.href).match(/(&|\?)ll=(\d+\.\d+,\d+\.\d+)/))==null){var T,o=new XMLHttpRequest();o.open("GET",location,false);o.send('');T=o.responseText;M=T.match(/centerLat: \d+\.\d+,centerLng: \d+\.\d+/);if(M==null){M=T.match(/center: \{lat: \d+\.\d+,lng: \d+\.\d+\}/);if(M==null){return;}}}X=String(M).match(/\d+\.\d+/g);location="http://borbis.web.fc2.com/mapionmate.html?grp=pda&uc=1&size=450,400&xw="+X[1]+"&yw="+X[0]})();

Googleマップ⇒MapionMateのブックマークレット(2008-11-16版)*1

Opera Mobile V8.65 , Opera V9.62 , IE7 , Safari V3.2 で動作確認したもの。

javascript:(function(){var R=function(n){return eval('RegExp.$'+n)},U=unescape(location),C={y:36,x:140},G=function(a,n){C.y=a.slice(0,2)+'.'+a.slice(2);C.x=n.slice(0,3)+'.'+n.slice(3);return C},D=function(s){return eval('typeof '+s)!='undefined'},T,o=new XMLHttpRequest();if(D('gApplication')&&D('gApplication.getMap')&&D('gApplication.getMap().getCenter'))C=gApplication.getMap().getCenter();else if(D('map')&&D('map.getCenter'))C=map.getCenter();else if(/(co(m|.jp)\/(m\?|m\/|imode\?)|(output=mobil))/.test(U)){if(/(&|\?)(latlng|cid)=(\d+),(\d+)/.test(U))C=G(R(3),R(4));else return}else{o.open('GET',location,false);o.send('');T=o.responseText;if(/center:\s*\{lat:\s*(\d+\.\d+),lng:\s*(\d+\.\d+)\}/.test(T)){C.y=R(1);C.x=R(2)}else if(/<img\s+src=.(|.+?co(m|.jp))\/mapdata[^>]*?(\?|&(|amp;))latitude_e6=(\d+)&(|amp;)longitude_e6=(\d+)/.test(T))C=G(R(5),R(7));else if(/(&|\?)ll=(\d+\.\d+),(\d+\.\d+)/.test(U)){C.y=R(2);C.x=R(3)}else return}window.open('http://borbis.web.fc2.com/mapionmate.html?xw='+C.x+'&yw='+C.y)})();

Opera V9.62 , Firefox V3.0.4 , IE7 , Safari V3.2 で動作確認したもの。

javascript:(function(){var R=function(n){var re=new Array(RegExp.$1,RegExp.$2,RegExp.$3,RegExp.$4,RegExp.$5,RegExp.$6,RegExp.$7);return re[n-1]};var U=unescape(location),C={y:36,x:140},G=function(a,n){C.y=a.slice(0,2)+'.'+a.slice(2);C.x=n.slice(0,3)+'.'+n.slice(3);return C},D=function(s){return eval('typeof '+s)!='undefined'},T,o=new XMLHttpRequest();if(D('gApplication')&&D('gApplication.getMap')&&D('gApplication.getMap().getCenter')){C=gApplication.getMap().getCenter()}else if(D('map')&&D('map.getCenter')){C=map.getCenter()}else if(/(co(m|.jp)\/(m\?|m\/|imode\?)|(output=mobil))/.test(U)){if(/(&|\?)(latlng|cid)=(\d+),(\d+)/.test(U)){C=G(R(3),R(4))}else{return}}else{o.open('GET',location,false);o.send('');T=o.responseText;if(/center:\s*\{lat:\s*(\d+\.\d+),lng:\s*(\d+\.\d+)\}/.test(T)){C.y=R(1);C.x=R(2)}else if(/<img\s+src=.(|.+?co(m|.jp))\/mapdata[^>]*?(\?|&(|amp;))latitude_e6=(\d+)&(|amp;)longitude_e6=(\d+)/.test(T)){C=G(R(5),R(7))}else if(/(&|\?)ll=(\d+\.\d+),(\d+\.\d+)/.test(U)){C.y=R(2);C.x=R(3)}else{return}}window.open('http://borbis.web.fc2.com/mapionmate.html?xw='+C.x+'&yw='+C.y)})();

使い方

(1) 「地図を検索」 の場合

(1-1)施設名で検索した場合の例

http://www.google.co.jp/

に行ってキーワード 「東京タワー」 を入力して 「マップ」 のリンクをクリックすると、このGoogleマップが表示されます。この状態でブックマークレットを実行するとこのMapionMateメニューが表示されます。

(1-2)住所で検索した場合の例

http://www.google.co.jp/

に行ってキーワード 「東京都千代田区三番町」 を入力して 「マップ」 のリンクをクリックすると、このGoogleマップが表示されます。この状態でブックマークレットを実行するとこのMapionMateメニューが表示されます。

(2) 「お店やサービスを検索」 の場合

http://www.google.co.jp/

に行ってキーワード 「ラーメン 東京都千代田区三番町」 を入力して 「マップ」 のリンクをクリックすると、このGoogleマップが表示されます。

この状態でブックマークレットを実行すると(1-2)で 「東京都千代田区三番町」 を住所検索した場合と全く同じこのMapionMateメニューが表示されるのですが、ここでは、お店を検索するのが目的ですから、さらに先に進んで、

ラーメン店の検索結果として表示されている選択候補のうちの

フジ食堂

のリンクを右クリックして 「リンクのアドレス(URL)をコピー」 してアドレスバーに貼り付けて [Enter] キーを押すと



この様に 「フジ食堂」 を中心にした小さな地図画像のページが表示されます。

この状態でブックマークレットを実行するか、もしくは、小さな地図画像のすぐ下に表示されている 「拡大地図を表示」 のリンクをクリックすると表示される大きな地図画像のページに行ってからブックマークレットを実行するとこのMapionMateメニューが表示されます。


(3)任意に位置にスクロールした場合

ここまでは、グーグルの検索結果(の緯度経度)を直接 MapionMate に渡す場合でしたが、今度は任意の位置にスクロールした結果(の緯度経度)を MapionMate に渡す方法を見てみます。

例として(2)で 「フジ食堂」 を検索した後に、近くの 「東郷公園前」 という交差点に行ってみます。

この様にズームすると 「東郷公園前」 が見えて来ます。そこでこの交差点をダブルクリックしてから 「このページのリンク」 のリンクをクリックするとこのページが表示されます。

この状態でブックマークレットを実行するとこのMapionMateメニューが表示されます。



*1:2008-11-16版が2つに分かれているのは、
(1) Opera Mobile V8.65 のブックマークに登録できる文字数の最大値が1023Byteである事。
(2) Firefoxでは、仕様的に eval('RegExp.$'+n) が許されていない事。
が理由です。また、個人的に if(〜) の後には {←中括弧→} を入れたほうが読み易いので文字数制限のゆるい場合用として後者には { } を入れてあります。因みに、前者のサイズは文字数制限の1023バイトになっています。