1

ユーザーの位置を自動的に検出し、ランドマークデータベースから最も近いランドマークのソートされたリストを表示する位置認識アプリケーションを構築したいと思います。アプリケーションはiPhone上に構築されます。

基本的な質問は次のとおりです。

  1. 近くのランドマークまでの距離を計算し、「最も近い」で並べ替える方法
  2. 計算を実行する場所(Webサービスを介した外部サーバー上)またはSQLiteデータベースやコアロケーションを介したiPhone自体

理想的には、アプリケーションは、より正確な方法である、カラスハエの距離(つまり、より大きな円の距離の式)ではなく、「ルーティングされた距離」を使用して距離を計算します。もちろん、これにはコストが伴います-計算がはるかに遅くなります。どの方法が最も適切か知りたいのですが。

また、(コアロケーションを使用して)電話自体で計算を実行する利点は、サーバーと通信する必要がなく(高速)、インターネット接続なしでアプリを使用できることです。欠点は、ランドマークデータベースを最新のデータと同期させることが難しいことです。

このような位置認識アプリケーションを実装する業界標準の方法があるかどうかを知りたいです。そうでない場合は、問題に対する最善の解決策を提案してください。

4

2 に答える 2

2

ほとんどの問題に対して、2 層のソリューションをお勧めします。最速のソリューションで大まかな意思決定を行い、次に上位ヒットで細かいレベルの意思決定を行います。たとえば、デバイスとサーバーのどちらに保存するかという質問に対しては、ユーザーの最後の位置に基づいてデバイスに「ローカルな」ものを保存することをお勧めします。つまり、ユーザーが前に近くにいたものは、再び近くにある可能性が高いため、それらのものを同期する必要があります。ユーザーが領域の外に移動すると、その領域にあるものは、最近使用されていないリストの下に移動し、最終的にパージする必要があります。そのため、新しい場所に行くと、しばらくは遅くなりますが、時間の経過とともに速くなります。

並べ替えについても、2 段が最適です。カラスフライで最初に並べ替えます。次に、ルーティングが安価な場合は、ルーティングによってトップ ヒットを並べ替えることができます (おそらくそうではありません)。ユーザーに 20 件のヒットしか表示されない場合、エントリが #80 か #100 かは関係ありません。気にするには遠すぎるので、計算するには遠すぎます。

一般に、iPhone での並べ替えに関しては、正確さよりも速度を強くお勧めします。1 位にすべきものが 3 位だったとしても、計算に 20 秒かかったのと比べて 5 秒かかったのと同じくらい重要ではありません。

于 2009-07-27T23:42:00.493 に答える
0

解決策は、検索する地理オブジェクトの数によって異なります。数千未満の場合は、単純なアプローチを使用できます。
100.000 から数百万の場合、クワッド ツリーが必要です。
iPhoneで利用できない空間データベースでない限り、データベースを忘れてください。つまり、遅くなります。

于 2012-03-17T00:52:33.053 に答える