使用坐标对最近的位置排序?

时间:2014-03-14 10:28:35

标签: ios objective-c mkmapview mapkit cllocationdistance

我列出了一个坐标为
的地方 如果用户选择特定位置,我想使用坐标建议附近的位置列表 我可以通过循环和搜索距离以下代码

的距离内的所有位置来实现这一点
  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
// }

但我想如果我们在数据库中有更多位置,这不是一种有效的方法 我能在这做什么

还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

您应该过滤内容以减少从数据库中提取的数量。你需要在你的情况下定义“附近”意味着什么,计算那个框外的所有东西都不在“附近”的纬度/长边界框,并使用最小和最大纬度/长值框来排除不匹配的东西。这是作为SQL查询的一部分完成的,因此非常有效。

现在,您的问题循环逻辑开始发挥作用。方法很好,但使用自己的循环可能不是最好的。相反,请查看使用sortedArrayUsingComparator:sortedArrayUsingFunction:context:

相关问题