iPhone MapKit - aggiornamento annotazioni coordinate e mappa

voti
2

Io uso questo tutorial per l'integrazione MapKit alla mia domanda: http://iphonebcit.wordpress.com/iphone-map-kit-tutorial/

CLLocationCoordinate2D coordinate;
coordinate.latitude = 49.2802;
coordinate.longitude = -123.1182;

NSUInteger count = 1;
for(int i = 0; i < 10; i++) {
    CGFloat latDelta = rand()*.035/RAND_MAX - .02;
    CGFloat longDelta = rand()*.03/RAND_MAX - .015;

    CLLocationCoordinate2D newCoord = {coordinate.latitude+latDelta, coordinate.longitude+longDelta};
    MapDemoAnnotation* annotation = [[MapDemoAnnotation alloc] initWithCoordinate:newCoord andID:count++];
    [mapView addAnnotation:annotation];
    [annotation release];
}

e

- (MKAnnotationView *)mapView:(MKMapView *)mapViewLocal viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = (MKPinAnnotationView*)[mapViewLocal dequeueReusableAnnotationViewWithIdentifier:@Pin];
if(pinView == nil) {
    pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@Pin];
    pinView.pinColor = MKPinAnnotationColorPurple;
    pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    pinView.animatesDrop = YES;
    pinView.canShowCallout = YES;
} else {
    pinView.annotation = annotation;
}
return pinView;

}

Così i perni imposterà sulla mappa in modo casuale. Nella mia applicazione, le coordinate cambieranno. Come posso cambiare le coordinate delle annotazioni, in modo che saranno aggiornati sulla mappa?

Qualcuno sa?

È pubblicato 09/12/2009 alle 14:05
fonte dall'utente
In altre lingue...                            


3 risposte

voti
2

A iPhone SDK 3.x è necessario rimuovere le annotazioni pin e impostare di nuovo. Che non è molto bello se si dispone di molte annotazioni di una mappa.

Io cerco di fare in modo meglio mi Ony display / rinnovare i miei annotazioni pin che sono sullo schermo. Quindi, se un utente ingrandire a New York, non ci sarà annotazioni pin a San Francisco o diversi l'utente non può vedere. Così la performance sarà molto meglio.

Forse in futuro questo sarebbe possibile. Lo spero :-)

Risposto il 08/02/2010 a 13:25
fonte dall'utente

voti
1

Dal momento che sto facendo le annotazioni in questo momento ho appena fatto un test rapido. È possibile prendere un avviso del compilatore, quindi potrebbe non essere supportata. Ma funziona.

Fare una classe MKAnnotation personalizzato in modo da poter impostare la proprietà di coordinate per essere scrivibile:

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

Poi a qualsiasi evento o l'intervallo che si desidera, modificare la coordinata utilizzando qualcosa di simile a questo:

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
Risposto il 18/05/2010 a 13:01
fonte dall'utente

voti
1

Questo tutorial è solo per ottenere una visualizzazione della mappa per mostrare, nient'altro. Si sta andando ad avere bisogno di un tutorial più grande. Ho trovato questo utile:

http://blog.objectgraph.com/index.php/2009/04/02/iphone-sdk-30-playing-with-map-kit/

Probabilmente ciò che è necessario fare è quello di un ciclo tra tutte le annotazioni sulla mappa, rimuovendoli, quindi scorrere l'array di dati, aggiungendo le annotazioni di nuovo. Si potrebbe essere più intelligente su di esso e scorrere l'array di dati, verificando se esiste già un perno con la stessa latitudine / longitudine sulla mappa, ma in questo modo si complica.

Risposto il 10/12/2009 a 04:02
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more