ホームページ  >  記事  >  ウェブフロントエンド  >  Javascriptは経度と緯度から2つの場所間の距離を計算します

Javascriptは経度と緯度から2つの場所間の距離を計算します

不言
不言オリジナル
2018-09-10 14:40:537971ブラウズ

JavaScriptを使用して2つの場所間の距離を計算するにはどうすればよいですか?これを実現する方法はたくさんあると思います。次の記事では、経度と緯度から 2 つの場所間の距離を計算する JavaScript を紹介します。

最近、仕事の都合で経度と緯度から二地点間の距離を計算する方法をネットで検索したところ、幾何学的な方法、絵を描く方法、補助線をたくさん作る方法、それから推論を証明するか、何も言わずに直接公式を定式化します。この記事ではこの距離の求め方をわかりやすく紹介します。

アイデア

簡単のため、地球は不規則な楕円体であり、計算では球として扱います。
球上の 2 つの場所間の最短距離は、2 点を通る大円の短弧の長さです。

考え方は以下の通りです:

円弧長 ← 弦の長さ(2点間の距離) ← 2点座標(直交座標) ← 緯度と経度

計算

1.

と仮定します。地球の半径は $R$

地球の中心と E 0° N 0° を結ぶ線が x 軸です

地球の中心と E 90° N 0° を結ぶ線が y 軸です-軸

地球の中心とE 0°N 90°を結ぶ線がz軸です

地球の表面に点$A$があり、経度は$e$、緯度は$n$、単位はラジアン

その場合、$A$ の座標は次のように表すことができます:

$$ x = R cdot cos(n) cdot cos(e)\ y = R cdot cos(n) cdot sin(e)\ z = R cdot sin(n) $$

コード

const R = 6371
const {cos, sin, PI} = Math

let getPoint = (e, n) => {
    //首先将角度转为弧度
    e *= PI/180
    n *= PI/180
    reutrn {
        x: R*cos(n)*cos(e),
        y: R*cos(n)*sin(e),
        z: R*sin(n)
    }
}
2. 座標に基づいて 2 点間の距離を計算します

これは単純すぎるので飛ばしてください

3. 弦の長さに基づいて円弧の長さを求めます

絵を描くことができます理解を助けるために:

Javascriptは経度と緯度から2つの場所間の距離を計算しますこれで、弦の長さ $c$、半径 $R$ が分かり、円弧の長さ $r$ が必要になります

これは非常に簡単です。$∠alpha$ のサイズを見つけるだけです。最初:


$$ アルファ = arcsin(c/2/R)\ r = 2α cdot R 米ドル

以上がJavascriptは経度と緯度から2つの場所間の距離を計算しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。