「Googleローカル」「Googleマップ」統合版で検索した地点をMapionで表示するブックマークレット(Opera8,Firefox用)



INTERNET Watchの記事等で紹介されているように「Googleローカル」と「Googleマップ」が統合された為、以前に書いたブックマークレットが使えなくなってしまいました。
で、この統合版に対応したブックマークレットを作りました。


更新履歴
2005-10-08 : 初版
2005-10-24 : 第2版
2005年10月20日ごろに Google ローカルの内部データの仕様が変更されて2005-10-08版のブックマークレットでは、位置のズレが出てしまいました。
ズレの量は、個々の検索結果によって異なりますが、ズレの量の経験的な平均値で補正しても充分実用的であろうと判断してブックマークレットを更新しました。
2005-11-23 : 第3版
その後、Googleローカルが正式に世界測地系に移行したことが判明し、
Google グループ
Tokyo2Wgs84 測地系変換
http://jsgt.org/mt/archives/01/000646.html
等の記事を参考にして更新。
これにより、世界測地系から日本測地系への座標変換の精度がかなり向上したものと思います。

javascript:(function(){function createHttpRequest(){if(window.ActiveXObject){try {return new ActiveXObject("Msxml2.XMLHTTP") ;} catch (e) {try {return new ActiveXObject("Microsoft.XMLHTTP") ;} catch (e2) {return null ;}}} else if(window.XMLHttpRequest){return new XMLHttpRequest() ;} else {return null ;}}function GetDegJP(a,b,c){var y=b-0.0046017+b*0.00010695-a*0.000017464;var x=a-0.010040+b*0.000046038+a*0.000083043;var d=(c=='E')?x:y;return Math.round(d*1e6)/1e6;} var M,X;if((M=unescape(location.href).match(/(&|\?)ll=(\d+\.\d+,\d+\.\d+)/))==null){var T,oXH=createHttpRequest(); if(oXH==null)return; oXH.open("GET",location,false);oXH.send(''); T=oXH.responseText; M=T.match(/var points=[^;]+;/); if(M==null){ M=T.match(/<center lat=.+?\//); if(M==null)return;}} X=String(M).match(/\d+\.\d+/g);location="http://www.mapion.co.jp/c/f?uc=1&grp=all&nl="+GetDegJP(X[1],X[0],'N')+"&el="+GetDegJP(X[1],X[0],'E')+"&scl=25000&bid=Mlink"})();

2005-12-04 : 第4版
「コメント」頂いたGXmlHttp.create()を利用してサイズ削減。
世界測地系から日本測地系への変換を↓に合わせて微修正。
02 DATUM 測地系変換の方法
これは実際には、経緯度の数値を小数点以下6桁までに丸めてしまうので計算結果に影響しない程度の”微”修正ですが、将来、万が一、丸めの桁数を変えた時のことを考慮して、修正しておきます。

javascript:(function(){function GetDegJP(x,y,c){var b=y-0.0046020+y*0.00010696-x*0.000017467;var a=x-0.010041+y*0.000046047+x*0.000083049;var d=(c=='E')?a:b;return Math.round(d*1e6)/1e6;} var M,X;if((M=unescape(location.href).match(/(&|\?)ll=(\d+\.\d+,\d+\.\d+)/))==null){var T,oXH=GXmlHttp.create(); if(oXH==null)return; oXH.open("GET",location,false);oXH.send(''); T=oXH.responseText; M=T.match(/var points=[^;]+;/); if(M==null){ M=T.match(/<center lat=.+?\//); if(M==null)return;}} X=String(M).match(/\d+\.\d+/g);location="http://www.mapion.co.jp/c/f?uc=1&grp=all&nl="+GetDegJP(X[1],X[0],'N')+"&el="+GetDegJP(X[1],X[0],'E')+"&scl=25000&bid=Mlink"})();

2007-02-21 : 第5版
Googleマップの内部処理が変更されて動かなくなっていたので更新しました。またマピオンのURLは従来型の非スクロール地図にしました。
なお、ここのブックマークレットはグーグルマップから直接マピオン地図を表示していますが、borbisのホームページや、Googleマップ⇒MapionMateのブックマークレットを更新した - borbisの日記で紹介しているGoogleマップ⇒MapionMateのブックマークレットなら多数の地図の中から希望にあった地図を選んで表示できます。ご参照ください。

javascript:(function(){function GetDegJP(x,y,c){var b=y-0.0046020+y*0.00010696-x*0.000017467;var a=x-0.010041+y*0.000046047+x*0.000083049;var d=(c=='E')?a:b;return Math.round(d*1e7)/1e7}function Deg2Dms(G){d=parseInt(G);m=parseInt((G-d)*60);s=parseInt(((G-d)*60-m)*60);ms=Math.round((((G-d)*60-m)*60-s)*1000);if(1000<=ms){ms=0;s=parseInt(s)+1;if(60<=s){s=0;m=parseInt(m)+1;if(60<=m){m=0;d=parseInt(d)+1;}}}m=(m<10?'0':'')+m;s=(s<10?'0':'')+s;ms=(ms<10?'00':ms<100?'0':'')+ms;return d+'/'+m+'/'+s+'.'+ms}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://www.mapion.co.jp/c/f?uc=1&grp=Air&nl="+Deg2Dms(GetDegJP(X[1],X[0],'N'))+"&el="+Deg2Dms(GetDegJP(X[1],X[0],'E'))+"&scl=25000&coco=,&icon=mark_loc,,,,,"})();


使い方


Googleローカル」型の使い方
INTERNET Watchの記事拡大画像(スクリーンショット)と同じ条件の「ラーメン」「東京都千代田区三番町」で検索するとこの画面になります。
そこで、第一候補の「フジ食堂」の文字をクリックすると右側の地図に吹き出しが現れます。この吹き出しの中の「フジ食堂」の文字をクリックすると小型の地図のページが表示されます。
この段階でブックマークレットを起動すると「フジ食堂」を中心にしたマピオン地図が表示されます。
また、前述の小型の地図のすぐ左下の位置に「拡大地図を表示」と書かれたリンクをクリックするとこちらの通常の「Googleマップ」の大きさの地図が表示されます。
この段階でも、ブックマークレットを起動すると「フジ食堂」を中心にしたマピオン地図が表示されます。


Googleマップ」型の使い方
では「Googleマップ」型の使い方は、どんな時か?と言うと、手短に言って、
画面の右上に表示されている「このページのリンク」をクリックして表示されたページでブックマークレットを起動した場合の事です。
具体的には先ほどの「フジ食堂」の拡大地図のページで下のほうに在る水色の長方形の付近をマウスでポイントしてダブルクリックして地図をスクロールさせてから画面の右上に表示されている「このページのリンク」をクリックするとこのページが表示されます。
この段階でブックマークレットを起動すると「東郷元帥記念公園」を中心にしたマピオン地図が表示されます。


 というか 言い訳
このブックマークレットは、Opera8 と Firefox で動作を確認しています。
IE は、「Googleマップ」型なら使えますが、「Googleローカル」型では動きません。
Googleローカル」型の場合、 XMLHttpRequest を使う必要があって IE にも対応させるとサイズが大きくなってしまいそうだからです。
どうしても IE で使いたい人は、「Googleローカル」「Googleマップ」統合版に対応させた京ぽんブックマークレットを使ってください。