2011-07-29 6 views

答えて

2

あなたはそうのように、Googleのサービスを利用してpointOfInterest文字列を毎回変えるループでそれを呼び出すことができます銀行、レストラン、またはバス(この例ではStation)を表すオブジェクト。おそらくMKAnnotationプロトコルをMKMapViewに追加したいので、それを実装することをお勧めします。これらの各オブジェクトには、座標プロパティ(CLLocationCoordinate2D)が必要です。私がこのようなことをしているとき、私はdistanceプロパティ(CLLocationDistance)も追加します。 ViewControllerでこれらのオブジェクトをインスタンス化するときは、それらを配列に追加します。

ユーザーのアプリケーションが更新されると、各オブジェクトはその場所からその場所までの距離を計算します。例えば

- (void)calculateDistance:(CLLocation *)location { 
    CLLocation *stationLocation = [[CLLocation alloc] initWithLatitude:coordinate.latitude longitude:coordinate.longitude]; 
    distance = [location distanceFromLocation:stationLocation]; 
    [stationLocation release]; 
} 

あなたはすべてのオブジェクトは、距離によって物体との距離、あなたができる今の並べ替え、あなたの配列を計算してみましょうしたら。

[stations sortUsingSelector:@selector(compareDistance:)]

これは、あなたのオブジェクトは、このメソッドを実装していることが必要です。

- (NSComparisonResult)compareDistance:(Station *)aStation { 
    if (distance < aStation.distance) return NSOrderedAscending; 
    if (distance > aStation.distance) return NSOrderedDescending; 
    return NSOrderedSame; 
} 

今、あなたは距離によって並べ替え銀行などを表すオブジェクトを使用して配列を持っている必要があります。

[stations objectAtIndex:0]はあなたの所在地の閉鎖となります。

0

あなたが持っている必要があります:あなたがここにJSON APIを取得することができます

CLLocationCoordinate2D coordinate = location.coordinate; 
NSString *pointOfInterest = @"banks"; 
NSString *URLString = [NSString stringWithFormat:@"http://ajax.googleapis.com/ajax/services/search/local?v=1.0&rsz=small&sll=%f,%f&q=%@",coordinate.latitude,coordinate.longitude, pointOfInterest]; 

URLString = [URLString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:URLString]]; 

// Perform request and get JSON back as a NSData object 
NSError *error = nil; 
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error]; 
if(error != nil) { 
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Error" 
                 message:[error localizedDescription] 
                 delegate:self 
               cancelButtonTitle:@"Done" 
               otherButtonTitles:nil] autorelease]; 
     [alert show]; 
} 
else { 
// Get JSON as a NSString from NSData response 
    NSString *jsonString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 
    //Return the values in NSDictionary format 
    SBJsonParser *parser = [[SBJsonParser alloc] init]; 

    NSDictionary *jsonResponse = [parser objectWithString:jsonString error:nil]; 
    NSDictionary *responseData = [jsonResponse objectForKey:@"responseData"]; 
    NSArray *results = [responseData objectForKey:@"results"]; 
} 

関連する問題