我列出了一个坐标为
的地方
如果用户选择特定位置,我想使用坐标建议附近的位置列表
我可以通过循环和搜索距离以下代码
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
// }
但我想如果我们在数据库中有更多位置,这不是一种有效的方法 我能在这做什么
还有其他方法吗?
答案 0 :(得分:1)
您应该过滤内容以减少从数据库中提取的数量。你需要在你的情况下定义“附近”意味着什么,计算那个框外的所有东西都不在“附近”的纬度/长边界框,并使用最小和最大纬度/长值框来排除不匹配的东西。这是作为SQL查询的一部分完成的,因此非常有效。
现在,您的问题循环逻辑开始发挥作用。方法很好,但使用自己的循环可能不是最好的。相反,请查看使用sortedArrayUsingComparator:
或sortedArrayUsingFunction:context:
。