Domanda

Io uso il loop di seguito per popolare il mio MapView.Tuttavia si mostra sempre solo un pin alla volta, non importa quante iterazioni faccio.

Individualmente dichiarazione di elementi non sembrano avere un impatto.

Sto usando l'iniziale 3.0 SDK con xCode 3.1.3 su osx 10.5.8, Il SDK 3.1 changelog non fanno alcuna menzione di eventuali correzioni al MKMapKit framework, quindi non ho sentito il bisogno di scaricare il 2,5 GB di file.

    for(NSDictionary* dict in results ){
    NSLog(@"Made Annotation  %@ at N%f E%f", [dict valueForKey:@"location"],[dict valueForKey:@"latitude"],[dict valueForKey:@"longitude"] );
    NSLog(@"List of keys %@", dict);

    LTAnnotation* pin = [[LTAnnotation alloc] initWithTitle: [dict valueForKey:@"location"]
                                     latitude: [dict objectForKey:@"latitude"]
                                    longitude: [dict objectForKey:@"longitude"]
    ];

    [MapView addAnnotation: pin];

}

Questa è uscita dalla prima istruzione di registrazione

Made Annotation  London at N51.3 E0.07000000000000001
Made Annotation  Amsterdam at N52.22 E4.53

E la seconda è la struttura del dizionario

List of keys {
    id = 0;
    latitude = 51.3;
    location = London;
    longitude = 0.07000000000000001;
    time = "12:00-13:00";
}
List of keys {
    id = 1;
    latitude = 52.22;
    location = Amsterdam;
    longitude = 4.53;
    time = "12:00-13:00";
}

Nel caso In cui siete interessati, ecco la mia implementazione di LTAnnotation

@interface LTAnnotation(Private)
    double longitude;
    double latitude;
@end

@implementation LTAnnotation

@synthesize title;
@synthesize subTitle;
-(id) initWithTitle:(NSString*)pTitle latitude:(NSNumber*)latDbl longitude:(NSNumber*) longDbl{
    self = [super init];

    self.title = pTitle;

    latitude = [latDbl doubleValue];
    longitude = [longDbl doubleValue];
    NSLog(@"Create Annotation for %@ at %fN %fE",pTitle,[latDbl doubleValue],[longDbl doubleValue]);
    return self;

}


-(CLLocationCoordinate2D) coordinate
{
    CLLocationCoordinate2D retVal;

    retVal.latitude = latitude;
    retVal.longitude = longitude;

    return retVal; 
}
@end

Tutto questo si combina per produrre questo ...

il testo alt http://img340.imageshack.us/img340/3788/picture1fg.png

Qualsiasi idea di dove sto andando di male?Grazie

È stato utile?

Soluzione

Due piccole cose che ho notato, che potrebbe aiutare a risolvere il problema:

  • Non rilasciare il pin nel primo esempio di codice che creerebbe una perdita di
  • Non si verifica se il "self = [super init];" nel tuo secondo esempio di codice è stato di successo ("if(self = [super init]){...} return self").Il NSLog anche solo uscite i parametri passati al metodo init, non i metodi di istanza dell'oggetto

E, cosa più importante, ho appena notato questo nel metodo init:

latitude = [latDbl doubleValue];
longitude = [longDbl doubleValue];

Non si sta utilizzando Objective-C 2 stile metodi supplementari (self.latitudine = ...) e non mantenendo la autoreleased valori.Questo probabilmente significa che le variabili che stanno scomparendo e che è perché non è possibile vedere le annotazioni, in quanto non sono validi coordinate.

Altri suggerimenti

Prova a impostare la latitudine e la longitudine come galleggianti.

MKMapView mostrare in modo non corretto salvato regione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top