//<script>
//--------------------------------------------------------------------------------------------------
// KsGMap - マップ・リンク　プラグイン　　Ver1.03
// http://www.ksgmap.jp/
// Copyright(c) 2005 Ksc
//--------------------------------------------------------------------------------------------------

//プラグインを登録（プラグイン名 , バージョン , 本体動作バージョン）
KsGMapEX.addPlugIn( "MapLink" , 1.03 , 1.00 );

//マップリンク・プラグイン定義
var KsGMapPlugIn_MapLink = new function(){
	this.GoogleMaps				= KsGMapPlugIn_MapLink_GoogleLocal;
	this.GoogleLocal			= KsGMapPlugIn_MapLink_GoogleLocal;
	this.GoogleEarth			= KsGMapPlugIn_MapLink_GoogleEarth;
	this.gooMap					= KsGMapPlugIn_MapLink_gooMap;
	this.gooMap_rosen			= KsGMapPlugIn_MapLink_gooMap_rosen;
	this.HatenaMap				= KsGMapPlugIn_MapLink_HatenaMap;
	this.MapQuest				= KsGMapPlugIn_MapLink_MapQuest;
	this.MSNVirtualEarth		= KsGMapPlugIn_MapLink_MSNVirtualEarth;
	this.Multimap				= KsGMapPlugIn_MapLink_Multimap;
	this.YahooMaps				= KsGMapPlugIn_MapLink_YahooMaps;
	this.YahooMaps_transit		= KsGMapPlugIn_MapLink_YahooMaps_transit;

	this.convCoordinateWGS84ToTokyo = KsGMapPlugIn_MapLink_convCoordinateWGS84ToTokyo;
}
//□マップ・リンク - Googleローカル（旧Google Maps）
function KsGMapPlugIn_mapLink_googleMaps( temp_event ){ return KsGMapPlugIn_MapLink_GoogleLocal( temp_event ); }		//エイリアス
function KsGMapPlugIn_MapLink_GoogleLocal( temp_event ){
	var event = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得

	//リンクの引数
	var url = "http://maps.google.co.jp/maps";
	url += "?ll=" + String( center.y ) + "," + String( center.x );
	url += "&z="  + KsGMapMap.gmap.getZoomLevel();

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - Google Earth
function KsGMapPlugIn_MapLink_GoogleEarth( temp_event ){
	var event = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得

	//リンクの引数
	var url = "http://maps.google.co.jp/maps";
	url += "?q=" + String( center.y ) + "," + String( center.x );
	url += "&output=kml";

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - goo地図
function KsGMapPlugIn_mapLink_gooMap( temp_event ){ return KsGMapPlugIn_MapLink.gooMap( temp_event ); }		//エイリアス
function KsGMapPlugIn_MapLink_gooMap( temp_event ){
	var event = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得
	center = KsGMapPlugIn_MapLink.convCoordinateWGS84ToTokyo( center );		//世界計測系から東京測地系に変換
	var base60_point = KsGMapCommon.Map.convBase10ToBase60( center.x , center.y );
	var zoom_table = new Array( 10 , 9 , 8 , 7 , 7 , 6 , 5 , 4 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 );	//尺度対応テーブル


	//リンクの引数
	var url = "http://map.goo.ne.jp/map.php";
	url += "?MAP=" + "E" + base60_point.lng.substring( 1 , 14 ) + "N" + base60_point.lat.substring( 1 , 13 );
	url += "&AM="  + zoom_table[ KsGMapMap.gmap.getZoomLevel() ];

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - goo地図 - 路線
function KsGMapPlugIn_mapLink_gooMap_rosen( temp_event ){ return KsGMapPlugIn_MapLink.gooMap_rosen( temp_event ); }		//エイリアス
function KsGMapPlugIn_MapLink_gooMap_rosen( temp_event ){
	var event = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得
	center = KsGMapPlugIn_MapLink.convCoordinateWGS84ToTokyo( center );		//世界計測系から東京測地系に変換
	var base60_point = KsGMapCommon.Map.convBase10ToBase60( center.x , center.y );

	//リンクの引数
	var url = "http://map.goo.ne.jp/rosen.php";
	url += "?MAP=" + "E" + base60_point.lng.substring( 1 , 14 ) + "N" + base60_point.lat.substring( 1 , 13 );

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - はてなマップ
function KsGMapPlugIn_mapLink_hatenaMap( temp_event ){ return KsGMapPlugIn_MapLink.HatenaMap( temp_event ); }		//エイリアス
function KsGMapPlugIn_MapLink_HatenaMap( temp_event ){
	var event  = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得
	var type   = KsGMapInfo.getType();

	//リンクの引数
	var url = "http://map.hatena.ne.jp/";
	url += "?x="	+ center.x;
	url += "&y="	+ center.y;
	url += "&z="	+ KsGMapMap.gmap.getZoomLevel();
	url += "&type=" + type;

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - MapQuest
function KsGMapPlugIn_MapLink_MapQuest( temp_event ){
	var event = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得
	var zoom_table = new Array( 9 , 9 , 8 , 7 , 6 , 6 , 5 , 5 , 4 , 4 , 3 , 2 , 2 , 1 , 1 , 0 , 0 , 0 );	//尺度対応テーブル

	//リンクの引数
	var url = "http://www.mapquest.com/maps/map.adp?formtype=latlong&latlongtype=decimal";
	url += "&latitude=" 	+ center.y;
	url += "&longitude="	+ center.x;
	url += "&zoom="			+ zoom_table[ KsGMapMap.gmap.getZoomLevel() ];

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - MSN Virtual Earth
function KsGMapPlugIn_MapLink_MSNVirtualEarth( temp_event ){
	var event  = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得
	switch( KsGMapInfo.getType() ){		//マップのタイプ
		case "map"			: style = "r";  break;
		case "satellite" 	: style = "a";  break;
		case "hybrid"		: style = "h";  break;
	}

	//リンクの引数
	var url = "http://virtualearth.msn.com/default.aspx";
	url += "?cp="		+ String( center.y ) + "|" + String( center.x );
	url += "&lvl="		+ ( 17 - KsGMapMap.gmap.getZoomLevel() );
	url += "&style="	+ style;

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - Multimap
function KsGMapPlugIn_MapLink_Multimap( temp_event ){
	var event = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得
	var zoom_table = new Array( 5 , 10 , 10 , 25 , 50 , 100 , 200 , 500 , 1000 , 2000 , 4000 , 10000 , 20000 , 40000, 40000, 40000, 40000, 40000 );	//尺度対応テーブル

	//リンクの引数
	var url = "http://www.multimap.com/map/browse.cgi";
	url += "?lat=" 		+ center.y;
	url += "&lon="		+ center.x;
	url += "&scale="	+ zoom_table[ KsGMapMap.gmap.getZoomLevel() ] * 1000;

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - Yahoo!地図情報
function KsGMapPlugIn_mapLink_yahooMaps( temp_event ){ return KsGMapPlugIn_MapLink.YahooMaps( temp_event ); }		//エイリアス
function KsGMapPlugIn_MapLink_YahooMaps( temp_event ){
	var event = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得
	center = KsGMapPlugIn_MapLink.convCoordinateWGS84ToTokyo( center );		//世界計測系から東京測地系に変換
	var base60_point = KsGMapCommon.Map.convBase10ToBase60( center.x , center.y );
	var zoom_table = new Array( 2 , 3 , 4 , 4 , 5 , 5 , 6 , 7 , 8 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 10 , 10 );	//尺度対応テーブル

	//リンクの引数
	var url = "http://map.yahoo.co.jp/pl";
	url += "?el=" + base60_point.lng.substring( 0 , 14 );
	url += "&nl=" + base60_point.lat.substring( 0 , 13 );
	url += "&sc=" + zoom_table[ KsGMapMap.gmap.getZoomLevel() ];

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - Yahoo!地図情報 - 周辺の最寄り駅
function KsGMapPlugIn_mapLink_yahooMaps_transit( temp_event ){ return KsGMapPlugIn_MapLink.YahooMaps_transit( temp_event ); }		//エイリアス
function KsGMapPlugIn_MapLink_YahooMaps_transit( temp_event ){
	var event = KsGMapFunc_link__getEvent( temp_event );
	var center = KsGMapMap.gmap.getCenterLatLng();	//中央座標取得
	center = KsGMapPlugIn_MapLink.convCoordinateWGS84ToTokyo( center );		//世界計測系から東京測地系に変換
	var base60_point = KsGMapCommon.Map.convBase10ToBase60( center.x , center.y );

	//リンクの引数
	var url = "http://map.yahoo.co.jp/nearstl";
	url += "?el=" + base60_point.lng.substring( 0 , 14 );
	url += "&nl=" + base60_point.lat.substring( 0 , 13 );

	//共通リンク処理にてリンクする
	KsGMapFunc_link__commonLink( event , url );
	return false;
}
//□マップ・リンク - 世界測地系から日本測地系に変換する
function KsGMapPlugIn_MapLink_convCoordinateWGS84ToTokyo( center ){
	var result = new Object;
	result.y = center.y + 0.00010696  * center.y - 0.000017467 * center.x - 0.0046020;
	result.x = center.x + 0.000046047 * center.y + 0.000083049 * center.x - 0.010041;

	return result;
}
//--------------------------------------------------------------------------------------------------
