2012-04-05 13 views
0

私はユーザーの現在地からのデータを表示するアプリケーションを作成しました。 ユーザーの最小距離を基準にして順番に並べ替える必要があります。iphone sdkの現在の位置から最小の位置を取得した後にtableviewを再配置する方法はありますか?

[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; 

ありがとうございます!

答えて

0

iは、元の開発者MatthewD

を専用のこの質問へリンクしてくださいよりも、ソリューションが

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]); 

は誰もが何か問題がある場合、それは完璧に動作します。このコードを使用して発見しました

0

モデル内の配列を望む距離順に並べ替え、次にテーブルビューでリロードを呼び出します。これはデータモデルから更新され、リストは正しい順序で表示されます。

関連する問題