0

ユーザーの現在地のデ​​ータを表示するアプリケーションを作成しました。ユーザーの最小距離に基づいて昇順で並べ替えたいと思います。私はこの種の関数を使用する必要があることを知っています:

[userLocationd istanceFromLocation:cameraLocation];

しかし、その後私は何をしますか?距離の後に全員を並べ替えて配列に配置する必要がありますが、ユーザーの最小位置取得に従ってすべてのセルを再配置するにはどうすればよいですか?(cellForRowAtIndexPath)

また; 私は実際にユーザーの場所を見つける方法を理解していません。私はその上にいますが、誰かが私を正しい方向に向けてくれれば助かります。

最大位置までの最小距離に配列を並べ替える方法は?

私はこのコードを使用しました。

    CLLocation *location1 = [[[CLLocation alloc] initWithLatitude:someLatitude longitude:someLongitude] autorelease];

    CLLocation *location2 = [[CLLocation alloc] initWithLatitude:coordinate.latitude longitude:coordinate.longitude];

    float target = [location2 distanceFromLocation:location1];
    target = target / 1000;

前もって感謝します!

4

2 に答える 2

0

モデルにある配列を希望の距離順に並べ替えてから、テーブルビューでリロードを呼び出します。その後、データモデルから更新され、リストは正しい順序になります。

于 2012-04-05T08:49:01.550 に答える
0

私は解決策がこのコードを使用することを発見しましたそれは完璧に動作します

 uint smallest[5];

    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithDouble:0.5], [NSNumber numberWithDouble:0.25], [NSNumber numberWithDouble:1], [NSNumber numberWithDouble:0.75], [NSNumber numberWithDouble:0.15], [NSNumber numberWithDouble:0.85], [NSNumber numberWithDouble:0.95], [NSNumber numberWithDouble:0.32], [NSNumber numberWithDouble:0.21], [NSNumber numberWithDouble:0.05], nil];

    // declare flags
    uint flags[array.count];

    // initialize flags
    for(uint i = 0; i < [array count]; i++)
        flags[i] = 0;

    for(int i = 0; i < 5; i++)
    {
        smallest[i] = -1;
        for(int j = 0; j < [array count]; j++)
        {
            // check flag
            if(!flags[j])
            {
                if(smallest[i] == -1 ||
                   [[array objectAtIndex:smallest[i]] doubleValue] > [[array objectAtIndex:j] doubleValue])
                {
                    // reset flag for previous index
                    if(smallest[i] != -1)
                        flags[smallest[i]] = 0;
                    // set flag for current index
                    flags[j] = 1;
                    smallest[i] = j;
                }
            }
        }
    }

    for(uint i = 0; i < 5; i++)
        NSLog(@"Smallest[%u]: %u -> %f", i, smallest[i], [[array objectAtIndex:smallest[i]] doubleValue]);

誰かが問題を抱えている場合は、元の開発者MatthewD専用のこの質問にリンクしてください

于 2012-04-05T11:09:56.997 に答える