0

私はXCodeとobjective-cに非常に慣れていません。この質問は以前に回答されている可能性がありますが、どうにかして機能させることができません。私の目的は、Google マップに複数の注釈を表示することです。私は緯度と経度をたくさん持っていますが、これまでのところ、1 つの注釈しか表示できませんでした。すべての注釈を一度に表示するにはどうすればよいですか。以下のコードがありますMKMapView-

- (void)viewDidLoad {

    // Set some coordinates for our position
    CLLocationCoordinate2D location;

    location.latitude = (double) 44.271745;
    location.longitude = (double) -88.453265;   
    // Add the annotation to our map view
    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Appleton" andCoordinate:location];
    [self.mapview addAnnotation:newAnnotation];

    [newAnnotation release];

    self.mapview.region = MKCoordinateRegionMakeWithDistance(location,100000,100000);
}

ループしてインスタンス化し、注釈を追加するためにnewAnnotation使用できることを理解しています。addAnnotationしかし、私はどういうわけかそれを行う方法がわかりません。これは非常に基本的なことかもしれませんが、私はこれに非常に慣れていません。どんな助けでも大歓迎です。

//
//  MapViewAnnotation.h
//

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface MapViewAnnotation : NSObject <MKAnnotation> {

    NSString *title;
    CLLocationCoordinate2D coordinate;

}

@property (nonatomic, copy) NSString *title;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d;

@end

//
//  MapViewAnnotation.m
//

#import "MapViewAnnotation.h"


@implementation MapViewAnnotation
@synthesize title, coordinate;

- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d {
    [super init];
    title = ttl;
    coordinate = c2d;
    return self;
}

- (void)dealloc {
    [title release];
    [super dealloc];
}
@end
4

1 に答える 1

1

場所が 1 つしかないようです。緯度と経度のリストが必要です。次に、そのリストをループして MapViewAnnotation をインスタンス化します。

- (void)viewDidLoad {
    NSArray *arrayOfLatLong = [NSArray arrayWithObjects: [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"10.22", @"20.212", nil] forKeys:[NSArray arrayWithObjects:@"Lat",@"Long",nil]], 
                               [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"10.22", @"24.5", nil] forKeys:[NSArray arrayWithObjects:@"Lat",@"Long",nil]], nil];


    for(NSDictionary *location in arrayOfLatLong) {
        CGFloat latitude = [[location valueForKey:@"Lat"] floatValue];
        CGFloat longitude = [[location valueForKey:@"Long"] floatValue];

        CLLocationCoordinate2D location;
        location.latitude = latitude;
        location.longitude = latitude;   
        MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Appleton" andCoordinate:location];
        [self.mapview addAnnotation:newAnnotation];

        [newAnnotation release];
        self.mapview.region = MKCoordinateRegionMakeWithDistance(location,100000,100000);
    }
}
于 2012-08-16T03:53:01.590 に答える