2012-03-20 6 views
0

私は、Androidに、経度、緯度および他の列を含むテーブルを持つSQLiteデータベースを持っています。または所定の距離に等しい。AndroidのSQLiteは、私の場所と指定された距離の値の間の距離を持つ行を照会します

たとえば、私は自分の現在の座標(緯度、経度)を知っており、私から最大10km離れたすべてのレコードをテーブルから取得したいと考えています。

スタックにいくつかのリンクが見つかりましたが、あまりにも固いものはありませんでした。この問題の最適化された解決策を知っている人はいますか?

私は緯度+緯度よりも小さく、緯度 - 経度および経度が緯度+距離よりも長く、長距離よりも大きいすべてのレコードを取得できると考えました。このクエリの後に、クエリが必要なレコードのみを返すわけではないので、不要なレコードを確認する必要があります。 これは良い考えですか?お住まいの地域の現在の緯度/経度の、句 -

+0

これは、AndroidよりもSQL質問の詳細です。あなたは、SQLの答えやGoogleの検索でより良い運を持っているかもしれません。 – Mimminito

答えて

3

おそらく二つの部分、

1でこれをやりたいが)あなたが特定の値が+または内にあるすべてのレコードを検索するクエリを実行します(@latitude>(lat - .001)and @latitude>(lat - .001))と (@longitude>(lng- .001)および@longitude>(longitude-)のようになります。 001))

2)上記の大まかな結果を使用して、大円/水平走査法を使用して、各位置の間の実際の距離が(大円/ rsinseはすでにアンドロイドマップapiの一部です)。

+0

ありがとうございました! – Cata

3

ちょうど記録のために、それは有用であるかもしれません。

あなたは何をしようとしているのか、バックエンドやサーバーを持っているのかわかりません。しかし、これらの場所を格納するサーバーがある場合は、MongoDBを使用して格納することができます(また、使用する必要があります)。地理空間情報を大きくサポートしています。ここで

はあなたがMongoDBのを使用してやりたい方法の例です:http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-Querying

+0

これについて知っておくと良いですが、私はサーバーにアクセスできません。 – Cata

関連する問題