0

ユーザーから取得した GPS 座標に基づいて、ユーザーの周囲の特定の半径 (メートル単位) 内でゲームを検索したいと考えています。その半径を構成可能にしたいので、指定された距離を 10 進数の半径に変換する関数に渡せる必要があります。

ユーザーの GPS 座標とゲームの GPS 座標を MongoDB に保存し、 within.center({center: [user.pos[0], user.pos[1]], radius: 1};) クエリを使用して近くのゲームを見つけます。ユーザーの位置。

そのクエリの radius プロパティは、構成可能にしたいものです。50 メートルを 10 進度の半径に変換したいとします。

convertDistanceToRadiusDegrees('50') -> 0.123

次に、その関数の結果を radius プロパティの値として使用します。

そして、ユーザーと見つかった各ゲームとの間の距離を計算したい:

calcDistance(pos1, pos2) -> 50

これらの両方の機能を実行できる Node.JS モジュール/JS プラグインはありますか? これまでのところ、ポイント間の距離を計算する Node.JS モジュールを見つけることができただけで、距離をメートル単位で 10 進度に変換することはできませんでした。

そのようなモジュールは存在しますか?そうでない場合、メートル単位の半径を 10 進数に変換できるモジュールはありますか? それは可能ですか?

4

2 に答える 2

0

ad "そのクエリの radius プロパティは、構成可能にしたいものです。たとえば、50 メートルを 10 進数の半径に変換したいとします: convertDistanceToRadiusDegrees('50') -> 0.123 "

1°の緯度差は 1*経度差よりも異なるため、これは間違った方法です。

正解: currentLocation と目的地の中心円座標間の距離を計算します。ユーザー melc が leafletjs API に投稿した遅いが正確な haversine 式を使用するか、インターネットで haverisen 式を検索して、そのコード行をコピーして貼り付けることができます。追加のライブラリは必要ありません。(円の中心までの距離が半径以下の場合、その場所は円の内側です)

その式に耐えられる場合は、毎秒何千もの目的地をチェックする必要がある場合は、より多くの労力が必要です。(たとえば、近くのいくつかのポイントに計算を減らすための空間インデックス)

于 2013-10-11T12:51:56.850 に答える
0

私が最近使用しているのは、GIS 計算用の完全な API である leafletjs です。

API - http://leafletjs.com/reference.html

距離法の一つ、

http://leafletjs.com/reference.html#latlng-distanceto

于 2013-10-11T07:05:52.823 に答える