如何从我的经纬度中找出最近的用户?

Posted

技术标签:

【中文标题】如何从我的经纬度中找出最近的用户?【英文标题】:How to find out the nearest users from my lattitude and longitude? 【发布时间】:2013-02-02 07:47:47 【问题描述】:

我有一个应用程序,其中我有一个位置坐标。(即纬度和经度)。然后我有一个朋友列表和他们的(纬度和经度)。

我需要根据谁是条件对我的朋友数组进行排序 离我最近的优先

.我有他们和我的经纬度。有人可以帮我实现这一目标吗?

【问题讨论】:

使用 CLLocation 方法这里是一个链接参考这个***.com/questions/10432023/… 【参考方案1】:
CLLocation *myLoc = [[CLLocation alloc] initWithLatitude:42.5000 longitude:1.5000];
NSArray *arr = [NSArray arrayWithObjects:
                [[CLLocation alloc] initWithLatitude:42.5000 longitude:1.5000],
                [[CLLocation alloc] initWithLatitude:24.0000 longitude:54.0000],
                [[CLLocation alloc] initWithLatitude:33.0000 longitude:65.0000],
                [[CLLocation alloc] initWithLatitude:17.0500 longitude:-61.8000],
                [[CLLocation alloc] initWithLatitude:18.2500 longitude:-63.1667],
                [[CLLocation alloc] initWithLatitude:41.0000 longitude:20.0000],
                [[CLLocation alloc] initWithLatitude:40.0000 longitude:45.0000],
                nil
                ];

CLLocation *nearestLoc = nil;
CLLocationDistance nearestDis = DBL_MAX;
for (CLLocation *loc in arr) 
    CLLocationDistance distance = [myLoc distanceFromLocation:loc];
    if (nearestDis > distance) 
        nearestLoc = loc;
        nearestDis = distance;
    

【讨论】:

【参考方案2】:

嗯,这取决于您如何存储这些信息。如果你用 postgis 将它存储在 postgres 中,那么我很确定你可以按距离排序。如果没有,您可以获取距离计算算法并为所有朋友运行它,可能缓存它,然后按距离排序。

【讨论】:

以上是关于如何从我的经纬度中找出最近的用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android App中检测最近的可用纬度和经度

如果我有他们的纬度/经度位置,我如何找出用户的邮政编码?需要帮助编写查询

如何从当前位置找到最近的经纬度?

在c#中以指定的半径获取经纬度的范围

如何根据用户位置查询 mySQL [关闭]

获取经纬度后如何获取用户的位置