2012-02-18 7 views
1

私は約800の地理座標を私のiPhoneアプリケーションにフラットファイルとして持っています。私は現在のユーザーの位置を取るアルゴリズムを見つけるための効果的な方法を探しています。これらの800個の座標すべてをループし、10マイル付近の座標のみを引きます。どのように効果的にこれを行うことができますか?また、この背後にある数学についての基本的な理解を得るためのリンクを共有してください。私の現在のGPS位置に最も近い座標を見つけよう

+1

ことはありませんが、彼らは簡単な例を提供http://stackoverflow.com/questions/913576/finding-the-closest-point-to-a-given-pointあなたはおそらく、この質問を見ることができますObjective-Cで書かれています。 –

+0

あなたは、リンクされた質問とは異なる問題を抱えていると思います。最も近い_を見つけようとしていて、指定された距離内で_all_を見つけようとしています。 – sarnold

答えて

4

ここでは、OPの最終コードが座標から位置を作成する方法と、それらの間の距離を計算する方法を理解するのに役立つ質問のlinkです。ここで

は場所を作成する方法です:あなたが場所をソートする必要はありません。しかし

CLLocationDistance distance = [locationA distanceFromLocation:locationB]; //CLLocationDistance is a double 

CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; 

そして、ここでは2つの位置の間の距離を見つける方法です。ループを繰り返して、近くの場所を配列に追加してください。

2

まず、私は誰もが距離を計算することに同意したと思います。あなたはHaversine関数を使用する必要があります。

Finding the closest point to a given point

検索時間が問題(あなたが言及した800個のデータポイントを反復処理)その後、方法についてが2Dハッシュある場合は?緯度/経度に基づいてバケットまたは地域にデータセットをロードするだけで、データセット全体を検索する必要はありません。一致する可能性のあるバケットのみが検索されます。

Good hash function for a 2d index

+0

それはまさに私が感謝のために探していたものです。 – dreampowder

+0

私は地図上に10点を持っていれば。そして、私は与えられた 'target'点に最も近い点を見つけたいと思います。私は自分の定規を出して、「目標」から各点までの距離を計算します。私は一番近い点を見つけられませんか?なぜ私はかわいこが必要でしょうか? – dimitris93

関連する問題