リプタクのもう覚えられません
Google
Web サイト内
topmemo ▶ マウス座標を緯度・経度に変換する

ActionScript

マウス座標を緯度・経度に変換する

マウス座標を世界地図背景に合せ緯度と経度に変換するサンプル

【サンプル1】

サンプル
地図座標から緯度経度測定サンプルを見る


【ActionScript3.0 サンプルソースコード】

/*-------------------------表示サイズ----------------------------*/
stage.scaleMode = StageScaleMode.SHOW_ALL;//縦横比固定

/*-------------------------緯度と経度を表示----------------------------*/

//マウス追跡初期設定
var Xpoint:Number;//目標原点X
var Ypoint:Number;//目標原点Y
var speed:Number = 0.2;//スピード

//エリアにマウスが入ったら関数sec1開始
map.addEventListener(MouseEvent.MOUSE_OVER,sec1);

//sec1 sec4停止+関数sec2開始
function sec1(event:MouseEvent):void {
	map.removeEventListener(Event.ENTER_FRAME,sec4);
	map.addEventListener(Event.ENTER_FRAME,sec2);
}

//sec2 緯度と経度を計算する処理実行
function sec2(event):void {

	/*-------------------------緯度を計算処理----------------------------*/

	var pxIdo:Number=(map.mouseY-map.height/2)*-1;//緯度中心を0px
	var ido:Number;//角度

	if (pxIdo>=0) {
		ido=0.0009*Math.pow(pxIdo,2)+0.4553*pxIdo+0.4109;
		textMap.textIdo.text=String("北緯 "+Math.round(ido*10)/10)+"°";
	} else {
		ido=-0.0009*Math.pow(pxIdo,2)+0.4553*pxIdo-0.4109;
		textMap.textIdo.text=String("南緯 "+-Math.round(ido*10)/10)+"°";
	}
	/*-------------------------経度を計算処理----------------------------*/

	var px0Hosei:Number;//緯度による0点補正値
	var pxKdo:Number;//px表示
	var kdoXhosei:Number;//緯度による倍率補正値
	var kdo:Number;//角度

	if (pxIdo>=0) {
		px0Hosei=0.0008*Math.pow(ido,2)+0.015*(ido)-0.05;
		kdoXhosei=-0.0369*Math.pow(ido,2) + 0.2017*ido +600.55;
	} else {
		px0Hosei=0.0008*Math.pow(ido,2)-0.015*(ido)-0.05;
		kdoXhosei=-0.0369*Math.pow(ido,2) - 0.2017*ido +600.55;
	}
	pxKdo=map.mouseX-283-px0Hosei;//px表示
	kdo=pxKdo*360/kdoXhosei;//角度

	if (kdo>=0) {
		textMap.textKdo.text=String("東経 "+Math.round(kdo*10)/10)+"°";
	} else {
		textMap.textKdo.text=String("西経 "+-Math.round(kdo*10)/10)+"°";
	}

	/*-------------------------マウスを追跡----------------------------*/

	Xpoint=mouseX;
	Ypoint=mouseY;
	textMap.x += (Xpoint-textMap.x)*speed;
	textMap.y += (Ypoint-textMap.y)*speed;

}


//マウスがエリアから出たら関数sec3開始
map.addEventListener(MouseEvent.MOUSE_OUT,sec3);

//sec3 関数sec2停止
function sec3(event:MouseEvent):void {
	map.removeEventListener(Event.ENTER_FRAME,sec2);
	map.addEventListener(Event.ENTER_FRAME,sec4);
}

//sec4 惰性停止する処理実行
function sec4(event):void {
	textMap.x += (Xpoint-textMap.x)*speed;
	textMap.y += (Ypoint-textMap.y)*speed;
}
last update 2008.7.16
参考・出典等
「特に無し」

▲page top

topmemoblogtestaboutmail
Copylight(C)2008 Riptac. All Rights Reserved.