2

私はそのようなJSONで値を取得しています:

{
        id = 1;
        latitude = "-23.0002";
        longitude = "-43.2438";
        name = Vips;
}

{
        id = 2;
        latitude = "-22.9283";
        longitude = "-43.1746";
        name = Elegance;
}

...

この値をテーブルビューに表示し、ユーザーの場所までの距離で並べ替える必要があります。そして、常にこの値を更新する必要があります。これどうやってするの?

displayObject は、WS から値を取得している NSMutableArray です。viewWillappear で私はやろうとしています:

NSArray *rawData = [NSArray arrayWithArray:displayObject];

rawData = [rawData sortedArrayUsingComparator: ^(id a, id b) {

    CLLocationDistance dist_a= [[a objectForKey:@"coordinate"] distanceFromLocation: locAtual];
    CLLocationDistance dist_b= [[b objectForKey:@"coordinate"] distanceFromLocation: locAtual];
    if ( dist_a < dist_b ) {
        return (NSComparisonResult)NSOrderedDescending;
    } else if ( dist_a > dist_b) {
        return (NSComparisonResult)NSOrderedDescending;
    } else {
        return (NSComparisonResult)NSOrderedSame;
    }
}];

しかし、それは機能していません。私は緯度と経度を持っています。「座標」がありません。誰か??

ありがとうございました!!

4

3 に答える 3

1

最初に、緯度と経度で位置オブジェクトを作成します。

CLLocation *location = [[CLLocation alloc] initWithLatitude:-23.0002 longitude:-43.2438];
CLLocation *userLocation = [[CLLocation alloc] initWithLatitude:-23.0002 longitude:-43.2438];

これら 2 つのオブジェクトを使用すると、以下を使用して距離を簡単に確認できます。

 -(CLLocationDistance)distanceFromLocation:(const CLLocation *)location

例えば:

CLLocationDistance dist_a = [locationUser distanceFromLocation:location];
于 2013-06-04T15:32:50.523 に答える