京ぽんでMapion地図を快適にするブックマークレット



2005-10-04の日記のブックマークレットでは、京ぽんの文字数制限に縛られてしまって使い心地が快適とはならなかった。
そこで、ブックマークレットから外部HTMLファイルを呼び出す事でマピオン地図を快適に扱えるようにした。


↓これを mapionmate.html としてローカル保存。

<html>
<head>
<title>MapionMate Ver.0.05</title>
<script language="JavaScript">
<!--
// 更新履歴
// 2005-10-17 Ver.0.01 初版
// 2005-10-18 Ver.0.02 「エリア確認ツール」機能追加
// 2005-11-12 Ver.0.03 「GoogleローカルPC検索」機能・リンク追加
// 2005-11-25 Ver.0.04 「GoogleローカルPC検索」での日本測地系→世界測地系変換精度UP
// 2005-12-27 Ver.0.05 「ちず丸forWILLCOM」&「ちず丸PC周辺検索」機能追加

//メモ
//表示縮尺 1/1500 1/3000 1/8000 1/21000 1/75000 1/15万 1/30万  1/90万  広域    全国
//sclパラメタ 5000   10000  25000  70000   250000  500000 1000000 3000000 5000000 26000000

//	 1/1500=  5000 で   1 DOT で X=    2/100 秒  Y=162/10000 秒
//
//		deltaX = (size_X/2) * (scale/5000) * (2/100)     * 1000 ミリ秒
//		deltaY = (size_Y/2) * (scale/5000) * (162/10000) * 1000 ミリ秒


	var grp = "pda";
	var uc = "1";
	var scl = "";
	var el = "";
	var pnf = "1";
	var size = "";
	var sfn = "pda_maps_00";
	var nl = "";

	var szScroll = '200,220';
	var grpold = "pda";


function gurl(stepX,stepY){
	var ret = '';
	var ee = ( el.split('/')[0]*60*60 + el.split('/')[1]*60 + (el.split('/')[2]-0) )*1000;
	var nn = ( nl.split('/')[0]*60*60 + nl.split('/')[1]*60 + (nl.split('/')[2]-0) )*1000;
	var dX = szScroll.split(',')[0] * (scl/5) /100;
	var dY = szScroll.split(',')[1] * (scl/5) * 81/10000;
	ee += eval(stepX) * dX;
	nn += eval(stepY) * dY;
	var retel = ['','/','','/','','.',''];
	var retnl = ['','/','','/','','.',''];
	retel[0] = parseInt(  ee / (60*60*1000)  );
	retel[2] = parseInt(( ee % (60*60*1000)) / (60*1000));
	retel[4] = parseInt(((ee % (60*60*1000)) % (60*1000)) / 1000);
	retel[6] = parseInt(ee % 1000);
	if(retel[2] < 10)        retel[2] =  '0'.concat(retel[2]);
	if(retel[4] < 10)        retel[4] =  '0'.concat(retel[4]);
	if(retel[6] < 10){       retel[6] = '00'.concat(retel[6]);
	}else if(retel[6] < 100) retel[6] =  '0'.concat(retel[6]);

	retnl[0] = parseInt(  nn / (60*60*1000)  );
	retnl[2] = parseInt(( nn % (60*60*1000)) / (60*1000));
	retnl[4] = parseInt(((nn % (60*60*1000)) % (60*1000)) / 1000);
	retnl[6] = parseInt(nn % 1000);
	if(retnl[2] < 10)        retnl[2] =  '0'.concat(retnl[2]);
	if(retnl[4] < 10)        retnl[4] =  '0'.concat(retnl[4]);
	if(retnl[6] < 10){       retnl[6] = '00'.concat(retnl[6]);
	}else if(retnl[6] < 100) retnl[6] =  '0'.concat(retnl[6]);

	switch ( grp ) {
		case 'pda' :
		case 'all' :
		case 'MapionBBold' :
			ret ='http://www.mapion.co.jp/c/f?grp='+grp
				+'&uc='+uc
				+'&scl='+scl
				+'&el='+retel.join('')
				+'&pnf='+pnf
				+'&size='+size
					/* +'&sfn='+sfn */
				+'&nl='+retnl.join('');
			break;
		case 'czm4W' :
			ret ='http://sp.chizumaru.com/dbh/willcom/listmap.aspx?account=willcom'
				+'&x='+String(ee/1000)
				+'&y='+String(nn/1000)
				+'&scl=1000';
			break;
	}

	return ret;
}

function nsizChange(myform){
	with(myform){
		if (nsiz.options[nsiz.selectedIndex].value == '0,0'){
			size = szScroll;
		}else{
			size = nsiz.options[nsiz.selectedIndex].value;
		}
	}
	return;
}
function fgrpChange(myform){
	with(myform){
		if (fgrp.options[fgrp.selectedIndex].value == '0'){
			grp = grpold;
		}else{
			grp = fgrp.options[fgrp.selectedIndex].value;
		}
	}
	return;
}
function furl(myform){
	with(myform){
		var s_X = sX.options[sX.selectedIndex].value;
		var s_Y = sY.options[sY.selectedIndex].value;
	}
	nsizChange(myform);
	fgrpChange(myform);
	return gurl(s_X,s_Y);
}

function GetDegE_JP(){
	return parseInt(( (el.split('/')[0]-0) + (el.split('/')[1]*60+(el.split('/')[2]-0))/(60*60) )*1000000)/1000000;
}
function GetDegN_JP(){
	return parseInt(( (nl.split('/')[0]-0) + (nl.split('/')[1]*60+(nl.split('/')[2]-0))/(60*60) )*1000000)/1000000;
}
function GetDegWGS84(a,b,c){
	var y = b - b * 0.00010695  + a * 0.000017464 + 0.0046017;
	var x = a - b * 0.000046038 - a * 0.000083043 + 0.010040;
	var d = (c=='E')?x:y;
	return Math.round(d*1e6)/1e6;
}
function GetDegE_WGS84(){
	return GetDegWGS84( GetDegE_JP() , GetDegN_JP() , 'E' );
}
function GetDegN_WGS84(){
	return GetDegWGS84( GetDegE_JP() , GetDegN_JP() , 'N' );
}

function GooglePcSearch(myform){
	var loc;
	var latlon=GetDegN_WGS84() + "," + GetDegE_WGS84();
	loc="http://local.google.co.jp/local?sc=1&hl=ja&q=" + encodeURI(myform.q.value) + "&lr=&ie=UTF-8&inlang=ja&sa=G&near=" + latlon + "&rl=1";
	location.href=loc;
}

function areatoolurl(){
	var ret ='http://www.willcom-inc.com/cgi-bin/Map4_txt.cgi?Mcod=10&Meki=&Mlat=' + GetDegN_JP()
			+ '&Mlon=' + GetDegE_JP() + '&Mzom=5&Mpag=9&Mtyp=4&Msvg=0&Mcrc=0';
	return ret;
}

function czmPCaround(){
	var ret ='http://www.chizumaru.com/around/index.aspx'
			+'?x='+String(Math.round((GetDegE_JP()*3600)*1000)/1000)
			+'&y='+String(Math.round((GetDegN_JP()*3600)*1000)/1000)
	return ret;
}
//-->
</script>
</head>
<BODY BGCOLOR='white' TEXT='black'>
<script language="JavaScript">
<!--
	if (location.search.length > 1) {
		var getTmpQuery = location.search.substr(1).split("&");
		for (var count in getTmpQuery) {
			var getQuery = getTmpQuery[count].split("=");
			switch ( getQuery[0] ) {
				case "grp" :
					grp = getQuery[1];
					grpold = grp;
					break;
				case "uc" :
								/*	uc = getQuery[1];	*/
					break;
				case "scl" :
					scl = getQuery[1];
					break;
				case "el" :
					el = getQuery[1];
					break;
				case "pnf" :
								/*	pnf = getQuery[1];	*/
					break;
				case "size" :
					size = getQuery[1];
					var sz = size.match(/\d+/g);
					size = sz.join(',');
					szScroll = size;
					break;
				case "sfn" :
								/*	sfn = getQuery[1];	*/
					break;
				case "nl" :
					nl = getQuery[1];
					break;
			}
		}
	}
//-->
</script>
<TT>
<FORM>
<SELECT name="fgrp" onChange="fgrpChange(this.form);">
	<OPTION value="0" selected>地図種類
	<OPTION value="pda">MapionPDA
	<OPTION value="all">Mapion標準
	<OPTION value="MapionBBold">MapionBB
	<OPTION value="czm4W">ちず丸forWILLCOM
</SELECT><BR>
<SELECT name="nsiz" onChange="nsizChange(this.form);">
	<OPTION value="100,100">100,100
	<OPTION value="200,220">200,220
	<OPTION value="220,320">220,320
	<OPTION value="350,350">350,350
	<OPTION value="0,0" selected>地図サイズ
	<OPTION value="400,400">400,400
	<OPTION value="500,500">500,500
	<OPTION value="600,600">600,600
	<OPTION value="954,768">954,768
	<OPTION value="1024,1024">1024,1024
</SELECT><BR>
<SELECT name="sY">
	<OPTION value="5/5">北 5/5
	<OPTION value="4/5">北 4/5
	<OPTION value="3/5">北 3/5
	<OPTION value="2/5">北 2/5
	<OPTION value="1/5">北 1/5
	<OPTION value="1/10">北 1/10
	<OPTION value="0" selected>南北 ±0
	<OPTION value="-1/10">南 1/10
	<OPTION value="-1/5">南 1/5
	<OPTION value="-2/5">南 2/5
	<OPTION value="-3/5">南 3/5
	<OPTION value="-4/5">南 4/5
	<OPTION value="-5/5">南 5/5
</SELECT><BR>
<SELECT name="sX">
	<OPTION value="5/5">東 5/5
	<OPTION value="4/5">東 4/5
	<OPTION value="3/5">東 3/5
	<OPTION value="2/5">東 2/5
	<OPTION value="1/5">東 1/5
	<OPTION value="1/10">東 1/10
	<OPTION value="0" selected>東西 ±0
	<OPTION value="-1/10">西 1/10
	<OPTION value="-1/5">西 1/5
	<OPTION value="-2/5">西 2/5
	<OPTION value="-3/5">西 3/5
	<OPTION value="-4/5">西 4/5
	<OPTION value="-5/5">西 5/5
</SELECT><BR>
<INPUT type="button" value=" 地図表示 " onClick="location.href=furl(this.form);">
</FORM>
<TABLE>
	<TBODY>
		<TR>
			<TD> </TD>
			<TD> </TD>
			<TD>北</TD>
			<TD> </TD>
			<TD> </TD>
		</TR>
		<TR>
			<TD> </TD>
			<TD><A HREF="javascript:void(0);" onClick="location.href=gurl(-4/5, 4/5);" ACCESSKEY='1'></A>&#59106;</TD>
			<TD><A HREF="javascript:void(0);" onClick="location.href=gurl(   0, 4/5);" ACCESSKEY='2'></A>&#59107;</TD>
			<TD><A HREF="javascript:void(0);" onClick="location.href=gurl( 4/5, 4/5);" ACCESSKEY='3'></A>&#59108;</TD>
			<TD> </TD>
		</TR>
		<TR>
			<TD>西</TD>
			<TD><A HREF="javascript:void(0);" onClick="location.href=gurl(-4/5, 0);" ACCESSKEY='4'></A>&#59109;</TD>
			<TD> </TD>
			<TD><A HREF="javascript:void(0);" onClick="location.href=gurl( 4/5, 0);" ACCESSKEY='6'></A>&#59111;</TD>
			<TD>東</TD>
		</TR>
		<TR>
			<TD> </TD>
			<TD><A HREF="javascript:void(0);" onClick="location.href=gurl(-4/5,-4/5);" ACCESSKEY='7'></A>&#59112;</TD>
			<TD><A HREF="javascript:void(0);" onClick="location.href=gurl(   0,-4/5);" ACCESSKEY='8'></A>&#59113;</TD>
			<TD><A HREF="javascript:void(0);" onClick="location.href=gurl( 4/5,-4/5);" ACCESSKEY='9'></A>&#59114;</TD>
			<TD> </TD>
		</TR>
		<TR>
			<TD> </TD>
			<TD> </TD>
			<TD>南</TD>
			<TD> </TD>
			<TD> </TD>
		</TR>
	</TBODY>
</TABLE>
</TT>
<HR>
<B>地図中心付近の検索</B><BR>
<FORM>
キーワード<BR><INPUT type="text" name="q" maxlength="255" size="22" value=""><BR>
<INPUT type="button" value="GoogleローカルPC版で検索" onClick="GooglePcSearch(this.form);">
</FORM>
<FORM>
<INPUT type="button" value=" エリア確認ツール " onClick="location.href=areatoolurl();">
</FORM>
<FORM>
<INPUT type="button" value=" ちず丸PC版で周辺検索 " onClick="location.href=czmPCaround();"><BR>
注意:ちず丸PC版の周辺検索結果から地図を表示するには↓のブックマークレットが必要です。<BR>
<textarea name='urltxt' cols='40' rows='4' wrap=hard>javascript:function jumpXYID2(x,y,X,Y,s,n,i,m){var S=s*2-1;location="http://sp.chizumaru.com/dbh/willcom/listmap.aspx?account=willcom&x="+X+"&y="+Y+"&scl="+String(S>10000?20000:S>5000?10000:S>2500?5000:S>1000?2500:S>500?1000:500)}</textarea><BR>
周辺検索結果のページでこのブックマークレットを実行後に地図のリンクをクリックして下さい。
</FORM>
<HR>
<B>リンク</B><BR>
<A HREF="http://borbis.infoseek.ne.jp/glocal.html">Googleローカル for AirEdgePhoneのborbis版</A><BR>
<A HREF="http://saidoc.com/glocal.html">Googleローカル for AirEdgePhoneのKurokenさんのオリジナル版</A><BR>
<A HREF="http://www.memn0ck.com/gps2gmaps.cgi">GoogleLocal with Mobile Location</A><BR>
<A HREF="http://www.blink.jp/members/borbis">PDA地域別オービス情報</A><BR>
<A HREF="http://d.hatena.ne.jp/borbis/">borbisの日記</A><BR>
<A HREF="http://blog.goo.ne.jp/kuroken_com">Kuroken Blog Plog Drop</A><BR>
<A HREF="http://www.memn0ck.com/">memn0ck</A><BR>
<A HREF="http://www.blink.jp/go?page=ShowShare&args=5&arg0=vieworg&arg1=37149790&arg2=1183&arg3=false&arg4=Public">地図検索サイト</A><BR>
<A HREF="http://mist.freespace.jp/kumisuke/">Bookmark - boxon</A><BR>
<A HREF="http://betelgeuse.at.infoseek.co.jp/">Betelgeuse Homepage</A><BR>
<A HREF="http://ajipon-navi.com/">えあえじほんnavi</A><BR>
</BODY>
</html>

そして、↑これを呼び出すブックマークレットが↓。

javascript:location='file://localhost/C:/data/mapionmate.html?'+document.body.innerHTML.match(/ME=["'][a-z]+["']\s+VALUE=["'][^"']+["']/ig).join('&').replace(/ME=["']([a-z]+).+?UE=["'](.+?)["'](&?)/ig,'$1=$2$3');



なお、mapionmate.html は、こちらにアップロードしてあるので↓のブックマークレットでも使えます。

javascript:location='http://borbis.web.fc2.com/mapionmate.html?'+document.body.innerHTML.match(/ME=["'][a-z]+["']\s+VALUE=["'][^"']+["']/ig).join('&').replace(/ME=["']([a-z]+).+?UE=["'](.+?)["'](&?)/ig,'$1=$2$3');

使い方
MapionPDA , Mapion標準 , MapionBB(従来版)のいずれかの地図が表示されている状態で、ブックマークレットを起動しメニューを選択して [地図表示] ボタンを押すか、もしくは、後述のアクセスキーを押します。


説明





メニューの選択で地図の種類を 「MapionPDA」 「Mapion標準」 「MapionBB」 「ちず丸forWILLCOM」 の中から自在に選択できます。
デフォルトでは、現在の地図を引き継ぎます。

メニューの選択でMapion地図のサイズを変更できます。
デフォルトでは、現在の地図サイズを引き継ぎます。

メニューの選択で自在にスクロール出来ます。
下図のように地図を縦横それぞれ20等分した中の丸印と数字で表されている部分が地図中心となるようにスクロール出来ます。
特に赤色の数字で表示されている地点にはアクセスキー(数字キー)で移動できます。



○┬○┬○┬○┬○○○○○┬○┬○┬○┬○      ← 北 5/5
├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤
○┼┼○┼○┼○○○○┼○┼○┼┼○      ← 北 4/5
├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤
○┼○┼○┼○┼○○○○○┼○┼○┼○┼○      ← 北 3/5
├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤
○┼○┼○┼○┼○○○○○┼○┼○┼○┼○      ← 北 2/5
├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤
○┼○┼○┼○┼○○○○○┼○┼○┼○┼○      ← 北 1/5
○┼○┼○┼○┼○○○○○┼○┼○┼○┼○      ← 北 1/10
○┼┼○┼○┼○○◎○○┼○┼○┼┼○      ← 南北 ±0
○┼○┼○┼○┼○○○○○┼○┼○┼○┼○      ← 南 1/10
○┼○┼○┼○┼○○○○○┼○┼○┼○┼○      ← 南 1/5
├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤
○┼○┼○┼○┼○○○○○┼○┼○┼○┼○      ← 南 2/5
├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤
○┼○┼○┼○┼○○○○○┼○┼○┼○┼○      ← 南 3/5
├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤
○┼┼○┼○┼○○○○┼○┼○┼┼○      ← 南 4/5
├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤
○┴○┴○┴○┴○○○○○┴○┴○┴○┴○      ← 南 5/5
                     
                     
                     
↑ ↑ ↑ ↑ ↑↑↑↑↑ ↑ ↑ ↑ ↑
西 西 西 西 西西東東東 東 東 東 東
5 4 3 2 11西11 2 3 4 5
/ / / / //±// / / / /
5 5 5 5 51015 5 5 5 5
         0 0


キーワードを入力して[GoogleローカルPC版で検索]ボタンを押すと地図中心位置付近の情報をGoogleローカルPC版で検索できます。

エリア確認ツール]ボタンを押すと地図中心位置付近のウィルコムのアンテナ位置を確認できます。

ちず丸PC版で周辺検索]ボタンを押すと地図中心位置付近の情報を「ちず丸PC版」の「周辺検索」機能で検索できます。
ただし、周辺検索結果のページから地図を表示するには↓のブックマークレットが必要です。

javascript:function jumpXYID2(x,y,X,Y,s,n,i,m){var S=s*2-1;location="http://sp.chizumaru.com/dbh/willcom/listmap.aspx?account=willcom&x="+X+"&y="+Y+"&scl="+String(S>10000?20000:S>5000?10000:S>2500?5000:S>1000?2500:S>500?1000:500)}

検索結果が表示されたら↑のブックマークレットを実行した後にリンクをクリックすると「ちず丸forWILLCOM」の地図が表示されます。


更新履歴
2005-10-17 Ver.0.01 初版
2005-10-18 Ver.0.02 「エリア確認ツール」機能追加
2005-11-14 Ver.0.03 「GoogleローカルPC検索」機能・リンク追加、HTMLファイルのアップロード先をmy.opera.comからinfoseekに変更
2005-11-25 Ver.0.04 「GoogleローカルPC検索」での日本測地系世界測地系変換精度UP
2005-12-27 Ver.0.05 「ちず丸forWILLCOM」&「ちず丸PC周辺検索」機能追加



追記
2010-11-03にホームページを http://borbis.web.fc2.com/ 移転したので、上記のURLを一部を更新しています。
また、2005年の当時と2010年現在とでは本家の マピオン もすっかり様変わりで、本題の 「MapionMateブックマークレット」 は その役割を終えた感があります
が、より発展した形の 「ChangeMapのブックマークレット」 は マピオン だけでなく多数の地図サイトの URL や 緯度・経度 文字列を処理してくれて幸せになれます。