[解決済み】2つの座標間の距離を計算する関数
質問
現在、下記のような機能を使っていますが、うまく動作しません。Googleマップによると
これらの座標
(から)。
59.3293371,13.4877472
から
59.3225525,13.4619422
) は
2.2
キロメートルであるのに対して、この関数は
1.6
キロメートルです。どうすればこの関数が正しい距離を返すようになるのでしょうか?
function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {
var R = 6371; // Radius of the earth in km
var dLat = deg2rad(lat2-lat1); // deg2rad below
var dLon = deg2rad(lon2-lon1);
var a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2)
;
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; // Distance in km
return d;
}
function deg2rad(deg) {
return deg * (Math.PI/180)
}
jsFiddleです。 http://jsfiddle.net/edgren/gAHJB/
解決方法は?
あなたが使っているのは ハバーシンの公式 球面上の2点間の距離を計算します。 まゆにつばをつける . Googleマップのリンクでは、直線ではないため、2.2kmと表示されています。
Wolfram Alphaは地理的な計算をするのに最適なリソースであり、また、その距離は この2点間の距離は1.652km .
直線距離を求めるのであれば、この関数は正しく動作しています。 もしあなたが欲しいものが運転距離(または自転車距離、公共交通機関の距離、歩行距離)であれば、マッピングAPI ( グーグル または ビング をクリックすると、適切なルートが表示され、そのルートには距離も表示されます。
ちなみに、Google Maps APIでは、球面距離のパッケージ化されたメソッドとして
google.maps.geometry.spherical
名前空間
(を探します。
computeDistanceBetween
). おそらく、自分で作成するよりもよいでしょう(まず、地球の半径についてより正確な値を使用しています)。
ちなみに、「直線距離」というのは、「球面上の直線」のことで、もちろん「曲線」(大円距離)である。
関連
-
[解決済み】TypeError: 'undefined'はオブジェクトではありません。
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] JavaScriptで2つの日付を比較する
-
[解決済み] JavaScriptで2つの数値の間の乱数を生成する
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】React Js: Uncaught (in promise) SyntaxError: 位置 0 の JSON で予期しないトークン < が発生しました。
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】Reactのeslintエラーはpropsの検証で見つからない
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない
-
[解決済み】中央値の計算 - javascript
-
[解決済み] 2つの緯度経度点間の距離を計算する?(ハバーシンの公式)
-
[解決済み] 2つのGPS座標間の距離を計算する