Google Maps API V3で、地図上の2点間の直線距離を求めます。
V2時代は GLatLng.distanceFrom() でしたが、V3では Google Maps Javascript API V3 Geometry Library の google.maps.geometry.sphericalに用意されている computeDistanceBetween() で計算できます。 「ヒュベニの公式(距離計算式)」に悩まなくても大丈夫ですよ!
プログラミングに興味はなく地図をクリックして調べたいだけの場合には、別のページへ…
V2時代は GLatLng.distanceFrom() でしたが、V3では Google Maps Javascript API V3 Geometry Library の google.maps.geometry.sphericalに用意されている computeDistanceBetween() で計算できます。 「ヒュベニの公式(距離計算式)」に悩まなくても大丈夫ですよ!
プログラミングに興味はなく地図をクリックして調べたいだけの場合には、別のページへ…
<script
type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"
></script>
<div id="map" style="height: 200px;"></div>
<script type="text/javascript">
google.maps.event.addDomListener(window, "load", function() {
var TOKYO = new google.maps.LatLng(35.681382, 139.76608399999998); // 東京駅
var OSAKA = new google.maps.LatLng(34.701909, 135.49497700000006); // 大阪駅
// 距離
var distance = google.maps.geometry.spherical.computeDistanceBetween(TOKYO, OSAKA);
// 地図(これ以下は特に必要ないですが…)
var map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(35.3, 137.63),
zoom: 7,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// 吹き出しに表示
new google.maps.InfoWindow({
content: distance + ' m',
position: OSAKA
}).open(map);
// 最短距離 (大圏コース)
new google.maps.Polyline({
geodesic: true,
path: [TOKYO, OSAKA],
map: map,
strokeColor: 'blue'
});
// 普通のPolyline(メルカトル図法上での最短距離)
new google.maps.Polyline({
path: [TOKYO, OSAKA],
map: map,
strokeColor: 'red'
});
});
</script> google.maps.geometry ライブラリは標準では読み込まれないので、Google Maps API を読み込む <script> タグに libraries=geometry を忘れずに!
このライブラリは静的なメソッドがあるだけなので、new したりする必要なく使えます。地図を表示する必要すらありあません。
地図上の直線(赤い線)でなく、球面上の最短距離(青い線)の距離が計算されている…と、思いますが、標高とか無視されてるでしょうし、誤差もあるようですが、細かいことは気にしない!
このライブラリは静的なメソッドがあるだけなので、new したりする必要なく使えます。地図を表示する必要すらありあません。
地図上の直線(赤い線)でなく、球面上の最短距離(青い線)の距離が計算されている…と、思いますが、標高とか無視されてるでしょうし、誤差もあるようですが、細かいことは気にしない!