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:or sortedArrayUsingFunction:context:

于 2014-03-14T10:47:48.713 回答