2013-05-13 37 views
1

非常惊讶这已经很难搜索。我的追捕只显示我使用CLGeocoder以用户友好的格式显示信息。如何搜索特定半径的位置?

我正在构建一个基于位置的应用程序,并且我具有保存位置(到服务器)并将它们列在表格视图中的功能。但是,当我无法过滤和安排与我所在地区相关的位置时,这一点几乎没有用处。

我应该在设备或PHP中设置位置半径吗?

我目前的解决方案的想法是只发送一个JSON字符串的坐标到一个php脚本,通过MySQL数据库查找位置字段小于X远离用户位置的每个条目(通过粗略的'其中X < 34.23049823 AND X> 34.44789874 AND Y < ...)类型的东西。我不认为这是实现附近位置搜索功能的最简单或最快捷的方式。

回答

1

当然,你可以在iOS中做到这一点。

// Given NSArray *locations as an array of CLLocation* that you wish to filter 

// and given a radius... 
CLLocationDistance radius = kSomeRadius; 

// and given a target you want to test against... 
CLLocation* target = [[CLLocation alloc] initWithLatitude:someLat longitude:someLon]; 


NSArray *locationsWithinRadius = [locations objectsAtIndexes: 
           [locations indexesOfObjectsPassingTest: 
            ^BOOL(id obj, NSUInteger idx, BOOL *stop) { 

             return [(CLLocation*)obj distanceFromLocation:target] < radius; 

            }]]; 

[target release]; 

源 - Objective-c search locations with radius

+0

这是很好的,直到我不希望每个数据点存储在一个单一的阵列做。关于如何最好地将它应用于选择30+以上的任何想法 - 来自5000+的(远程)数据库的结果?按照纬度/经度顺序列出我的数据库条目是否最符合时间? – user 2013-05-13 01:31:22

+0

按lat/long列出的是一种方法,或者对于用户来说更自然的是相对于其当前位置增加的距离排序的地点,其中最接近的地方首先列出。或者其他任何启发式的,如某些地方可能会被该用户的朋友(如果您有这种信息)经常访问,因此将它颠覆到顶端。 – 2013-05-13 02:07:41

+0

那么,我的意思是在数据库中。当然,我打算在应用程序中显示最近的位置。但是我试图想象我应该如何构建我的数据库来搜索位置,以及根据用户位置查询数据库的最有效方法。 – user 2013-05-13 15:05:19