0

一連の辞書の緯度と経度を使用して、地図上に複数のピンを表示しようとしています。問題は、常にplistの最後の辞書のピンのみを表示していることです。

これが私が持っている方法です:

- (void)loadMapPins
{
MapAnnotation *annotation = [[MapAnnotation alloc] init];

for (int i=0; i<self.dataDictionary.count; i++){

    NSDictionary *dictionary = [NSDictionary dictionaryWithDictionary:[self.dataDictionary objectAtIndex:i]];

    double latitude = [[dictionary objectForKey:@"Latitude"] doubleValue];
    double longitude = [[dictionary objectForKey:@"Longitude"] doubleValue];

    CLLocationCoordinate2D coord = {.latitude =
        latitude, .longitude =  longitude};
    MKCoordinateRegion region = {coord};

    annotation.title = [dictionary objectForKey:@"Name"];
    annotation.subtitle = [dictionary objectForKey:@"Center Type"];
    annotation.coordinate = region.center;
    [mapView addAnnotation:annotation];
    }
}

ループを通過し、それに応じてピンをマップにドロップする必要があります。ヘルプ/例をいただければ幸いです。

4

1 に答える 1

1

アノテーションの作成をループに移動したいと思います。作成したものの外観から、ループ内で何度も何度も変更します。self.dataDictionaryループが完了すると、注釈変数への最後の変更は、反復している最後の項目を反映します 。

以下のコードは、ループが繰り返されるたびに新しいアノテーションオブジェクトを作成します。

- (void)loadMapPins
{

    for (int i=0; i<self.dataDictionary.count; i++){

    NSDictionary *dictionary = [NSDictionary dictionaryWithDictionary:[self.dataDictionary objectAtIndex:i]];

    double latitude = [[dictionary objectForKey:@"Latitude"] doubleValue];
    double longitude = [[dictionary objectForKey:@"Longitude"] doubleValue];

    CLLocationCoordinate2D coord = {.latitude =
        latitude, .longitude =  longitude};
    MKCoordinateRegion region = {coord};

    MapAnnotation *annotation = [[MapAnnotation alloc] init];
    annotation.title = [dictionary objectForKey:@"Name"];
    annotation.subtitle = [dictionary objectForKey:@"Center Type"];
    annotation.coordinate = region.center;
    [mapView addAnnotation:annotation];
    }
}

お役に立てれば、

スコットH

于 2012-09-18T02:48:56.160 に答える