2点間の直線距離を求める

説明

 APIバージョン2では2点間の直線距離を求めることができます(最大0.3%の誤差が発生します)。求めたい2つの位置をGLantLng()で指定し、distanceFrom()を使えば2点間の直線距離をメートルで得ることができます。

逆引きGoogle Maps APIリファレンス  詳しい解説などは逆引きGoogle Maps APIリファレンス、またはGoogle Maps APIリファレンスを参照してください。

サンプルコード [実行]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Sample</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAasAJryKxWJnBFVJa487d9hTHGAxTVT7IRADYa-JdYz7xQ8IQZBSthgDZdggYpQHsmm6WYtHstQFfLA" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
window.onload = function() {
var shiojiri = new GLatLng(36.1142687700159, 137.94783353805542); // とりあえず塩尻駅
var shinjyuku = new GLatLng(35.69054610763589, 139.70005631446838); // とりあえず新宿駅
var text = "二点間の距離:"+Math.floor(shiojiri.distanceFrom(shinjyuku))+" m";
document.getElementById("result").innerHTML = text;
map = new GMap2(document.getElementById("gmap"));
map.setCenter(shiojiri, 6);
map.addControl(new GLargeMapControl());
marker1 = new GMarker(shiojiri, { draggable: true });
map.addOverlay(marker1);
marker2 = new GMarker(shinjyuku, { draggable: true });
map.addOverlay(marker2);
GEvent.addListener(marker1, "dragend", calc );
GEvent.addListener(marker2, "dragend", calc );
}
function calc(marker){
var point1 = marker1.getPoint();
var point2 = marker2.getPoint();
var text = "二点間の距離:"+Math.floor(point1.distanceFrom(point2))+" m";
document.getElementById("result").innerHTML = text;
}
//]]>
</script>
</head>
<body>
<div id="gmap" style="width: 600px; height: 400px"></div>
<div id="result"></div>
</body>
</html>