2012-02-20 16 views
0

スクリーンショットに示すように、SQLiteデータベースに緯度と経度を保存しました。SQLite - テーブルからlat、longのセットを取得します。

enter image description here

データベース名:database

テーブル名:テーブル表でtable

フィールド:

* Name 

* Score 

私はiPhoneアプリケーションを開発しています。私は、入力としてlatitudelongitude及びrange(距離)を与える場合には、私は結果として与えrangeのデータベースからlatitudes & longitudesのセットを取得すべきです。私は

Latitude -> 40.7000, Longitude -> -73.9500 and Range -> 30 milesとして入力パラメータを与えた場合たとえば、

は、それが与えられたrangeLatitude & Longitudeのためのデータベースをチェックし、resultを返す必要があります。 だから、resultは私がiPhoneでこれを行う仕事ができる方法

40.752199, -73.996696 
40.793019, -73.969574 
40.750898, -73.86898 
40.675431, -73.954811 
40.68194, -73.927689 

すべきですか?前もって感謝します。

答えて

1

あなたが探しているのはHaversine関数です。このページには、すばやく機能する素晴らしいSQLite関数があります。 1つはあなたのために動作しない場合は

http://www.thismuchiknow.co.uk/?p=71

は、半正矢を検索し、あなたはないものを見つけることができます。

多くの場合、「WHERE distance < 30」をSQLに追加する必要があります。また、キロメートルの代わりにマイルを得るために使用する数値を調整する必要があるかもしれません。

1

私はタスクを解決する2つの異なる方法を見ることができます。

  1. 非常に複雑なSQLリクエストを作成するには、いくつかの数学的関数を使用します。 (x-center_x)^ 2 +(y - center_y)^ 2 <半径^ 2(半径はマイルではなく、gradで表示されます)

  2. すべての座標を緯度でDBから読み取りますrande r-30 miles < center_x < r + 30マイル。あなたの要件を修正しないすべてのコードを減らすよりも、CoreLocation Frameworkを使用することができます。 "[location1 getDistanceFrom:location2]"

関連する問題