0

座標のある場所のリストがあり
ますユーザーが特定の場所を選択した場合、座標を使用して近くの場所のリストを提案したい ループを配置し、次のコードから距離内のすべての場所を検索することでそれを実現できます

  for(i=0;i<locations.count;i++)
 CLLocation *locA = [[CLLocation alloc] initWithLatitude:lat1 longitude:long1];

 CLLocation *locB = [[CLLocation alloc] initWithLatitude:lat2 longitude:long2];

 CLLocationDistance distance = [locA distanceFromLocation:locB];
// if(distance<10)
 //{
 //show the pin
// }

しかし、データベースにさらに多くの場所がある場合、効率的な方法ではないと思います ここでできること

代わりの方法はありますか??

4

1 に答える 1

1

データベースから抽出する量を減らすには、コンテンツをフィルタリングする必要があります。ケースで「近く」が何を意味するかを定義し、そのボックスの外側のすべてが「近く」ではない緯度/経度の境界ボックスを計算し、ボックスの最小値と最大緯度/経度値を使用して一致しないものを除外する必要があります。これは SQL クエリの一部として実行されるため、非常に効率的です。

これで、質問ループ ロジックが機能します。このアプローチは問題ありませんが、独自のループを使用することはおそらく最善ではありません。代わりに、sortedArrayUsingComparator:またはの使用を見てくださいsortedArrayUsingFunction:context:

于 2014-03-14T10:47:48.713 に答える