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 したりする必要なく使えます。地図を表示する必要すらありあません。
地図上の直線(赤い線)でなく、球面上の最短距離(青い線)の距離が計算されている…と、思いますが、標高とか無視されてるでしょうし、誤差もあるようですが、細かいことは気にしない!