まず第一に、この質問がstackoverflowまたは他のstackexchangeネットワークにあるべきかどうかわかりません。だから間違った場所なら私のために移動してください。
DBやjsでlat/lngの2点間の距離を計算した方が良いですか? Google マップは computeDistanceBetween() を提供しているため。これは本当に使いやすいですが、10000行あり、距離内に5行しかない場合、マップに表示することを考えています。
何か案が?
まず第一に、この質問がstackoverflowまたは他のstackexchangeネットワークにあるべきかどうかわかりません。だから間違った場所なら私のために移動してください。
DBやjsでlat/lngの2点間の距離を計算した方が良いですか? Google マップは computeDistanceBetween() を提供しているため。これは本当に使いやすいですが、10000行あり、距離内に5行しかない場合、マップに表示することを考えています。
何か案が?
それは計算の頻度に依存します。ポイントが永続的である場合は、行をテーブルに挿入する前に一度だけ必要なすべての距離を計算し、計算結果を保存して後でクライアントに提供できます。ただし、計算が繰り返し可能で、ポイントの座標が最終的に変更される場合は、クライアント側の計算を使用することをお勧めします。実際、ブラウザーが JavaScript を実行して、多くの点についても距離を計算するのはそれほど難しいことではありません。また、本当に大量の入力データがある場合は、クライアント側でバックグラウンドで事前計算を行い、結果を localStorage* にキャッシュして、ユーザーが待たないようにすることを検討できます。
* store.jsは、ブラウザー間の互換性を確保するのに役立ちます。
距離を計算する方が良い場所は、アプリケーションに完全に依存します。クライアントが情報を持っている場合は、JSの方が優れています。
このシナリオでは、データベースに保存されている特定のポイントに最も近いポイントを計算しようとしているように見えます。これは、地理空間インデックスを使用してデータベースで処理する方が確実に優れています。
典型的なアルゴリズムは、単純なアプローチで結果セットを絞り込みます。x & y +/- 10KM 内で、その結果セットを使用して完全な計算を行います。
情報がデータベースにある場合は、DBMS に組み込みの地理空間ツールを使用することを検討してください。
あなたの質問がどこで計算すべきかについてのみである場合、私はクライアント側を好みます。シンプル、高速、より柔軟で動的であり、サーバーをアンロードします。
あなたの問題についてあまり知らなくても、おそらくクライアント側で(または「JSで」)計算集約的なタスクを実行することになります。これにより、クライアント間で分散されるため、サーバー側アプリケーションに過度の負荷がかかることはありません。
もちろん、最良のアプローチを選択するために考慮しなければならない多くの変数があります。
その他の考慮事項: