Аннотации, загруженные из списка, не отображаются - PullRequest
1 голос
/ 02 февраля 2012

Это первый раз, когда я использую plist.Я просматривал и не могу найти никакой другой помощи.

У меня есть код ниже в моем viewDidLoad.Почему мои аннотации не отображаются?

    mapView.showsUserLocation = YES;
mapView.delegate=self;


NSMutableArray *annotations = [[NSMutableArray alloc]init];
NSString *path = [[NSBundle mainBundle] pathForResource:@"StationAddress" ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
NSArray *anns = [dict objectForKey:@"GasStation"];
NSLog(@" MapView is %@",mapView);
NSLog(@"anns is: %@", anns);


for(int i = 0; i < [anns count]; i++) {
    NSLog(@"read2");

    double realLatitude = [[[anns objectAtIndex:i] objectForKey:@"Latitude"] doubleValue];
    NSLog(@" double lat value is %f",realLatitude);
    double realLongitude = [[[anns objectAtIndex:i] objectForKey:@"Longitude"] doubleValue];
    NSLog(@" double lot value is %f",realLatitude);

    NSLog(@"read3");



    MyAnnotation *myAnnotation = [[MyAnnotation alloc] init];
    CLLocationCoordinate2D theCoordinate;
    theCoordinate.latitude = realLatitude;
    theCoordinate.longitude = realLongitude;
    myAnnotation.coordinate=CLLocationCoordinate2DMake(realLatitude,realLongitude);

    myAnnotation.title = [[anns objectAtIndex:i] objectForKey:@"Name"];
    myAnnotation.subtitle = [[anns objectAtIndex:i] objectForKey:@"Address"];


    [mapView addAnnotation:myAnnotation];
    [annotations addObject:myAnnotation];
    [myAnnotation release];

ПРАВКА MyAnnotation.h

@interface MyAnnotation : NSObject<MKAnnotation> {

CLLocationCoordinate2D  coordinate;
NSString*               title;
NSString*               subtitle;

}

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

MyAnnotation.m

@implementation MyAnnotation

@synthesize title;
@synthesize subtitle;
@synthesize coordinate;

Жесткий код для аннотаций (это внутри viewdidload)

[mapView setShowsUserLocation:YES];

CLLocation *userLoc = mapView.userLocation.location;
CLLocationCoordinate2D userCoordinate = userLoc.coordinate;


NSLog(@"user latitude = %f",userCoordinate.latitude);
NSLog(@"user longitude = %f",userCoordinate.longitude);

mapView.delegate=self;

NSMutableArray* annotations=[[NSMutableArray alloc] init];

MKPointAnnotation *annot1 = [[MKPointAnnotation alloc] init]; 
annot1.title = @"TItle1"; 
annot1.subtitle=@"Address of title"; 
annot1.coordinate = CLLocationCoordinate2DMake(21.946114, 120.792778); 
[mapView addAnnotation:annot1]; 

и я сделал это для 3000 из них, но они работали медленно, поэтому я пытаюсь найти лучший способ

1 Ответ

0 голосов
/ 02 февраля 2012

Попробуйте это.

Изменение:

     float realLatitude = [[[anns objectAtIndex:i] objectForKey:@"Latitude"] floatValue];

К этому:

     double realLatitude = [[[anns objectAtIndex:i] objectForKey:@"Latitude"] doubleValue];
     NSLog(@" double lat value is %f",realLatitude);

(делайте также долготу).

Также подсказка: проверьте свои аннотации в южной части Атлантического океана, к юго-западу от Экваториальной Гвинеи - вот где широта / долгота {0,0}, и если ваши данные не конвертируются правильно, то там, где ваши аннотации могут будет.

...