仕事で2点間の距離を算出する必要に迫られました。
最初はどうやってやるのか想像もつかず、調べても事例が少なく困っていました。
唯一見つけたのが、「Google Maps API V3で距離を求める方法 | ロジカルアーツ研究所」。
これがめちゃくちゃ参考になり、なんとか解決できました。
一応、プログラムを本職としていますが、知らないことは数多くありますね。
というか、知らないことだらけ。
Google Maps 8Bit April Fools Day Worldmap / Vanderelbe.de
このページの目次
ソースコード
解決できたソースコードは以下のとおりです。
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=true&language=ja"></script> <script type="text/javascript" src="http://code.google.com/apis/gears/gears_init.js"></script> <script> var posA, posB; var geocoder; //住所から距離算出 function showAddress(adrs) { geocoder = new google.maps.Geocoder(); var req = { address: adrs }; geocoder.geocode(req, geoResultCallback); } function geoResultCallback(result, status) { if (status != google.maps.GeocoderStatus.OK) { return; } posB = result[0].geometry.location; var distance = google.maps.geometry.spherical.computeDistanceBetween(posA, posB); alert(distance.toFixed(0) + "m"); } function initialize() { if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(function (position) { // 位置情報を取得 var coords = position.coords; posA = new google.maps.LatLng(coords.latitude, coords.longitude); }); } else if (google.gears) { var geo = google.gears.factory.create('beta.geolocation'); geo.getCurrentPosition(function(position) { posA = new google.maps.LatLng(position.latitude,position.longitude); }); } } </script> </head> <body onload="initialize()">
ソースコード解説
まず、最初の2行でGoogle MapのAPIを読み込んでいます。これはおまじないみたいなもの。
距離を求める処理をさせるために「libraries=geometry」が必要です。(1行目)
JavaScriptのinitialize()関数で現在位置を取得しています。
showAddress()関数に住所(例:東京都)を引数に渡してあげると、
先のinitialize()関数で取得した現在位置と引数の住所の距離を計算してくれます。
距離を計算しているのが、「google.maps.geometry.spherical.computeDistanceBetween(posA, posB);」の部分。
最後は返ってきた値を整数に戻して、メートルを表す、「m」を後ろにくっつけてます。
実行すると「4083m」という感じで表示されます。
追記
PHPでも同様のことができます。JavaScriptではなく、PHPで同じことをしたい場合は以下の記事がおすすめです。
・Google Map API v3で2点間の距離を算出する方法(PHP)