2010-01-14 6 views
2

J'utilise un MapView et j'y ajuste des annotations (broches violettes) et mon emplacement d'utilisateur (qui est un cercle bleu). Étant donné que les annotations de broche violettes se déplaceront, je dois les supprimer et les définir de nouveau sur la carte.iPhone - supprimer les annotations de broche de la carte, mais pas le mien

Je l'ai mis avec:

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}; 
    MyMapAnnotation* annotation = [[MyMapAnnotation alloc] initWithCoordinate:newCoord andID:count++]; 
    [mapView addAnnotation:annotation]; 
    [annotation release]; 
} 

Avant cela, je fais un

[mapView removeAnnotations:mapView.annotations]; 

mais cette ligne également supprimer mon emplacement avec le point bleu! Comment est-ce que je pourrais faire ceci sans enlever mon emplacement.

Merci beaucoup à l'avance & Cordialement.

Répondre

3

Une manière très simple de le faire est d'inclure cette ligne avant que la boucle où vous supprimez les annotations:

self.mapView.showsUserLocation = NO; 

puis après la boucle, mettre l'emplacement de l'utilisateur retour dans

self.mapView.showsUserLocation = YES; 

EDIT: Je viens de voir que vous n'avez pas bouclé les emplacements pour les enlever. Je ne suis pas sûr que cela fonctionnera de la façon dont vous le faites.

+0

Hm, comment pourrais-je l'améliorer? Parce que je fais: - (MKAnnotationView *) Mapview: (MKMapView *) mapViewLocal viewForAnnotation: (id ) {annotation \t if (annotation == mapViewLocal.userLocation) { \t \t mapViewLocal.userLocation.title = @ "Tester"; \t \t mapViewLocal.userLocation.subtitle = @ "Test Sub"; \t \t [mapViewLocal setRegion: MKCoordinateRegionMakeWithDistance (mapViewLocal.userLocation.coordinate, 3000, 3000) animé: NO]; \t \t retour nul; \t} ... Donc, je vais toujours définir mon emplacement dans le centre. Et le point bleu n'apparaît pas. Je dois déplacer le MapView, puis le point bleu sera affiché. – Tim

+0

Pour obtenir une vue de la carte avec les annotations au centre, parcourez-les en boucle et trouvez la latitude et la longitude max et min, puis réglez l'étendue de la région et le centre en utilisant celles-ci. Si vous souhaitez inclure l'emplacement de l'utilisateur dans les annotations, assurez-vous qu'il est affiché en utilisant la méthode que j'ai écrite ci-dessus. 'MKMapView' a une propriété appelée' annotations' qui stocke toutes les annotations (y compris l'emplacement de l'utilisateur). Si vous voulez juste centrer la carte sur l'emplacement de l'utilisateur, utilisez 'setCenterCoordinate: animated:' –

+0

Si vous pouvez épargner 5 $, ce tutoriel m'a vraiment aidé à comprendre les vues de la carte: http://pragprog.com/screencasts/v-bdmapkit/ using-map-kit –

Questions connexes