0

ロケーションベースのアプリケーションを構築しています。

私にはユーザー A がいて、彼の現在地の緯度と経度の値があるとしましょう。

ユーザー B、C、D とその場所も取得しました。たとえば、ユーザー B + D はユーザー A から半径 5 km 以内にあり、ユーザー C はユーザー A から半径 12 km 以内にあり、どうすればよいか知りたいです。 4/5/6/7km などで私に近い人を教えてくれる関数を作成します。ユーザー A が彼から 8.5km 離れたユーザーを必要とする場合、結果としてユーザー B + D とその距離が得られます。ユーザーAさんから

これで、Location クラスを使用し、distance 関数を使用して 2 人のユーザー間の距離を計算できることがわかりました。しかし、問題は、半径距離を計算したい場合、データベースからユーザーリスト全体を取得し、それをクライアントに送信して、サーバーから取得したユーザーとの間の距離の計算を開始する必要があることです。より良い、より効率的な方法があれば、コース外でそれをしたくありません..

まず、サーバー側でユーザー間の距離を計算するために http リクエストまたはいくつかの数学関数を使用することを考えましたが、クライアント (Android) はそうするための非常に優れたツールを提供しているため、それが最善であることを知ることができません。やるべき事。

頭を上げてくれてありがとう:)

4

1 に答える 1

0

サーバーから要求している 1 人に n-1 人のユーザーの場所を常に送信するのは非効率的であり、半径の近くで少数のみを送信するよりも不必要な帯域幅を消費すると思いませんか? サーバーはこの計算を簡単に行うことができます。アプリのユーザー ベースがどんどん増えていくシナリオを考えてみてください。じゃあ何?このような計算は常にサーバー上で実行されます。

また、ほとんどの場合、サーバーはクライアントよりもはるかに優れたコンピューティング能力を備えています。したがって、たとえ Android ツールが儲かるように見えても、このようなシナリオでそれらを使用してしまうことはありません。

ツールに関しては、サーバー側にも似たようなものがあります。ハバーサイン関数。また、mongo などの一部のデータベースには、ロケーション フィルターが組み込まれています。したがって、これは実際にチェックする価値があります。

于 2016-01-08T21:07:25.937 に答える