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="//maps.google.com/maps/api/js?sensor=false&libraries=geometry"
></script>
<div id="map" style="height: 240px;"></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(34.77, 138.015),
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> API読み込み時にlibraries=geometryを忘れずに!
google.maps.geometry ライブラリは静的なメソッドがあるだけなので、new したりする必要なく使えます。地図を表示する必要すらありあません。
地図上の直線(赤い線)でなく、球面上の最短距離(青い線)の距離が計算されている…と、思いますが、標高とか無視されてるでしょうし、誤差もあるようですが、細かいことは気にしない!
google.maps.geometry ライブラリは静的なメソッドがあるだけなので、new したりする必要なく使えます。地図を表示する必要すらありあません。
地図上の直線(赤い線)でなく、球面上の最短距離(青い線)の距離が計算されている…と、思いますが、標高とか無視されてるでしょうし、誤差もあるようですが、細かいことは気にしない!