1

ここで立ち往生しています ここに緯度と経度の配列があります 、JSON解析から取得します

Arr_Lat=[[[[main valueForKey:@"responseData"]valueForKey:@"results"]valueForKey:@"lat"] copy];
Arr_Long=[[[[main valueForKey:@"responseData"]valueForKey:@"results"]valueForKey:@"lng"] copy];

現在の場所と緯度と経度のインデックスの配列の間の距離を計算し、配列に保存しました......

CLLocation *currLoc = [[CLLocation alloc] initWithLatitude:appDel.curr_lat longitude:appDel.curr_long];

CLLocation *destLoc = [[CLLocation alloc] initWithLatitude:appDel.str_lat longitude:appDel.str_long];

distance = [destLoc distanceFromLocation:currLoc]/1000;

DistStr = [[NSMutableString alloc]initWithFormat:@" %0.3f",distance];


    [appDel.Arr_distance addObject:DistStr];

このように距離を並べ替えました

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES]autorelease];


sortedFloats = [appDel.Arr_distance sortedArrayUsingDescriptors:
                             [NSArray arrayWithObject:sortDescriptor]];

タイトル、住所、距離を表示しましたが、住所と距離が一致しません距離配列の昇順に従って住所を並べ替えたい....

前もって助けてくれてありがとう........

4

1 に答える 1

0

Arr_distance は NSString であり、配列をそのようにソートするのは正しくないと思います。これを試して:

sortedFloats = [appDel.Arr_distance sortedArrayUsingComparator:^(NSString *dis1, NSString *dis2){
    if ([dis1 floatValue] < [dis2 floatValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    } else {
        return (NSComparisonResult)NSOrderedAscending;
    }
}];]

必要に応じて NSOrderedDescending または NSOrderedAscending を交換する必要がある場合があります。

于 2012-12-06T08:19:09.650 に答える