1

POIロケーターアプリを開発しています。1600を超える場所でJSONファイルを解析しています。このリストを現在のユーザーの場所と効率的に比較して、最も近い10を取得するにはどうすればよいでしょうか。

編集 ローカルJSONファイルを使用したいので、アプリはサーバーを使用していません。

4

4 に答える 4

1

forループを使用し、場所とユーザーの場所の間の距離を測定することで修正しました。

distance = locationA.distanceTo(locationB); 
if (distance <= 1000 * 10) //finding all within 10km Radius.{
 ADD GEOPOINT HERE 
}
于 2012-10-19T05:48:01.757 に答える
0

地理空間クエリをサポートするデータベース(mongodbなど)に1600の場所を保存できるとよいでしょう。データベースを直接クエリして、ユーザーの特定の緯度と経度に最も近いN個の場所を特定できます。

于 2012-10-17T06:35:04.213 に答える
0

バードビューアプローチで距離を見つける場合は、場所を照会し、ここにある式を使用して距離を確認できます。しかし、道路(グラフ)を考慮に入れる場合は、グーグルマップのような何らかのパスファインディングサービスを使用するか、独自のパスファインディングサービスを使用する必要があります。(私が知る限り、Androidには組み込みのメカニズムはありません。)

于 2012-10-17T06:37:59.190 に答える
0

この種のアプリも作成しており、MySQLとMongoDBでいくつかのパフォーマンステストを実行しました。MongoDBはドキュメントベースであり、データをjson形式で保存するため、ロケーションベースのクエリ(ユーザーに最も近いレストランなど)は非常に高速に完了して返されます。私が覚えている限りでは、MySQLよりも約10倍高速でした。したがって、アプリケーションが現在no-sqlデータベースを使用していない場合でも、プロジェクトの場所を計算する部分だけでもMongoDBを使用することを強くお勧めします。

于 2012-10-17T06:54:07.907 に答える