0

私は、位置座標 (緯度と経度) を持つアプリケーションを持っています。次に、(緯度と経度) を持つ友人のリストを持っています。

自分に最も近い人が最初になるという条件に従って、友達の配列をソートする必要があります

.私は彼らと私の緯度と経度を持っています.誰かがこれを達成するのを手伝ってくれますか?

4

2 に答える 2

2
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;
    }
}
于 2013-02-02T08:06:09.893 に答える
0

うーん、この情報をどのように保存しているかによって異なります。postgisを使用してpostgresに保存している場合、距離でソートできると確信しています。そうでない場合は、距離計算アルゴリズムを引っ掛けて、すべての友達に対して実行し、おそらくキャッシュしてから、距離で並べ替えることができます。

于 2013-02-02T08:01:43.040 に答える