我有一个应用程序,其中我有一个位置坐标。(即纬度和经度)。然后我有一个朋友列表和他们的(纬度和经度)。
我需要按照离我最近的人优先的条件对我的朋友数组进行排序
.我有他们和我的经纬度。有人可以帮我实现这一目标吗?
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;
}
}
嗯,这取决于您如何存储这些信息。如果你用 postgis 将它存储在 postgres 中,那么我很确定你可以按距离排序。如果没有,您可以获取距离计算算法并为所有朋友运行它,可能缓存它,然后按距离排序。