Google Maps APIを使って地図上の距離計測

市販の地図ソフトウエアの機能の1つに,距離測定を行うものがある。

これは,地図をクリックをしていって,線を引き,合計の距離を表示してくれる。

私は,これをよく使って,ドライブとか,コースでどれぐらいの距離を走行するのかを事前に確認したり,事後にチェックしたりする。


Google Maps APIでもそれをやってみた。

http://www2s.biglobe.ne.jp/~satosi/gmap/map_length.html

使い方:
 地図上をクリックしていくと,線が引かれて,下に距離がkm単位で表示される。
 「1つ戻る」ボタンを押せば,線が1つづつ消していける。
 「全て消去」ボタンで全ての点を消せる。

 下のテキストボックスに,点のデータが出力があるので,保存しておけば,後で貼り付けて,「座標を適用」ボタンを押せば,線を引きなおしてくれる。


ちなみに,Google Maps APIだけだと,距離を測定できないので(できるのかな?),
経度緯度から計算で求める方法を使っている。


// x : 経度(東西), y : 緯度(北南)
// (x1,y1)-(x2,y2)

function cal_length(x1,y1, x2,y2)
{
x1 = x1 * Math.PI / 180.0;
y1 = y1 * Math.PI / 180.0;
x2 = x2 * Math.PI / 180.0;
y2 = y2 * Math.PI / 180.0;

A = 6378137; // 地球の赤道半径(6378137m)

x = A * (x2-x1) * Math.cos( y1 );
y = A * (y2-y1);

L = Math.sqrt(x*x + y*y); // メートル単位の距離
//c = Math.atan(y / x) *180.0/ Math.PI; // 方角 東:0(0度),北:1/2π(90度),西:π(180度),南:3/2π(270度)
return L;
}


参考文献:
轍 ~自転車的なる日記~ 緯度・経度から距離を求める方法
http://wadati.blog10.fc2.com/blog-entry-345.html
(2007/2/19)



今回は,これに加えて,外部データのダイナミックロードも試している。
Ajaxを使って外部から経路のCSVファイルの経度緯度の点の一覧の
データを読み込み表示する機能だ。

Google Maps APIでなら,実はかなり簡単だ。
サーバ上のa.csvファイルの中身を取得するには:

GDownloadUrl("a.csv", function(txt, stat) {
// ダウンロードが終わるか,失敗すれば,ここに来る。(非同期割り込み)

// txtに a.csv のファイルの中身が入っている!
 alert(txt); // ファイルの中身を表示
 alert(stat); // ステータスを表示
});

これだけだ。。。すごい簡単だ。

変数 txt には,ファイルの中身が入っている。
変数 stat で,ファイル取得に成功しているかどうかのチェックが出来る。

JavaScriptで,ここまで便利なものが,これほど簡単に出来るとは・・・。


この記事へのコメント

この記事へのトラックバック