¿Hay una manera simple de eliminar todas las anotaciones en un mapa sin recorrer todas las anotaciones mostradas en Objective-c?Cómo eliminar todas las anotaciones en un MKMapView
Respuesta
Sí, aquí es cómo
[mapView removeAnnotations:mapView.annotations]
Sin embargo, la línea de código anterior eliminará todas las anotaciones mapa "bolos" de el mapa, incluyendo el pasador de la ubicación del usuario "Pin azul". Para eliminar todos los mapas anotaciones y mantener el pasador de la ubicación del usuario en el mapa, hay dos posibles maneras de hacer eso
Ejemplo 1, retener la ubicación del usuario de anotación, retire todos los pines, añadir la ubicación del usuario pasador de vuelta, pero hay un defecto con este enfoque, se hará que el pasador de la ubicación del usuario a parpadear en el mapa, debido a la eliminación de el pasador a continuación, añadir de nuevo
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if (userLocation != nil) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
Ejemplo 2, yo personalmente prefiero para evitar Identificación del retirando el pasador de la ubicación del usuario , en primer lugar,
- (void)removeAllPinsButUserLocation2
{
id userLocation = [mapView userLocation];
NSMutableArray *pins = [[NSMutableArray alloc] initWithArray:[mapView annotations]];
if (userLocation != nil) {
[pins removeObject:userLocation]; // avoid removing user location off the map
}
[mapView removeAnnotations:pins];
[pins release];
pins = nil;
}
Aquí es cómo eliminar todas las anotaciones excepto la ubicación del usuario, escrito explícitamente porque imagino que vendrá en busca de esta respuesta de nuevo:
NSMutableArray *locs = [[NSMutableArray alloc] init];
for (id <MKAnnotation> annot in [mapView annotations])
{
if ([annot isKindOfClass:[ MKUserLocation class]]) {
}
else {
[locs addObject:annot];
}
}
[mapView removeAnnotations:locs];
[locs release];
locs = nil;
Gracias, Esto funcionó para mí con copiar y pegar y eliminar [versión de locus] y cambiar mapView a _mapView. Estaba siguiendo un gran tutorial para MKDirections aquí http://www.devfright.com/mkdirections-tutorial y quería eliminar el pin después de obtener instrucciones. Agregué el código debajo de la última línea de ese método a la 'ruta clara' Método – Hblegg
actualización eliminar múltiples - (IBAction) clearRoute: (UIBarButtonItem *) remitente { self.destinationLabel.text = nil; self.distanceLabel.text = nil; self.steps.text = nil; [self.mapView removeOverlay: routeDetails.polyline]; NSMutableArray * locs = [[NSMutableArray alloc] init]; para (id
Esta es la forma más sencilla de hacerlo:
-(void)removeAllAnnotations
{
//Get the current user location annotation.
id userAnnotation=mapView.userLocation;
//Remove all added annotations
[mapView removeAnnotations:mapView.annotations];
// Add the current user location annotation again.
if(userAnnotation!=nil)
[mapView addAnnotation:userAnnotation];
}
Buena respuesta, mucho más rápido que iterar a través de todas ellas, especialmente si tiene más de un puñado de anotaciones. –
Al quitar una anotación y luego volver a agregarla, hace que el pin parpadee en el mapa. Puede que no sea un gran problema para algunas aplicaciones, pero puede ser molesto para el usuario si constantemente actualiza el mapa con nuevas anotaciones. – RocketMan
Por alguna razón, mi anotación UserLocation siempre desaparece con este método. La solución de Victor Van Hee funciona para mí. –
Esto es muy similar a S respuesta de andip, excepto que no vuelve a agregar la ubicación del usuario para que el punto azul no parpadee una y otra vez.
-(void)removeAllAnnotations
{
id userAnnotation = self.mapView.userLocation;
NSMutableArray *annotations = [NSMutableArray arrayWithArray:self.mapView.annotations];
[annotations removeObject:userAnnotation];
[self.mapView removeAnnotations:annotations];
}
adoran las soluciones sin bucles, grreeeeeat !!! –
No es necesario guardar ninguna referencia a la ubicación del usuario. Todo lo que se necesita es:
[mapView removeAnnotations:mapView.annotations];
Y todo el tiempo que tiene mapView.showsUserLocation
conjunto de YES
, de todas maneras tendrá la ubicación del usuario en el mapa. La configuración de esta propiedad al YES
básicamente le pide a la vista del mapa que comience a actualizar y recuperar la ubicación del usuario, para mostrarla en el mapa. De los MKMapView.h
comentarios:
// Set to YES to add the user location annotation to the map and start updating its location
Terminé usando este formato: [self.mapView.removeAnnotations (mapView.annotations)] –
versión Swift:
func removeAllAnnotations() {
let annotations = mapView.annotations.filter {
$0 !== self.mapView.userLocation
}
mapView.removeAnnotations(annotations)
}
Swift 2.0 simple y lo mejor:
mapView.removeAnnotations(mapView.annotations)
Swift 3
if let annotations = self.mapView.annotations {
self.mapView.removeAnnotations(annotations)
}
- 1. ¿Cómo eliminar todas las anotaciones de MKMapView sin quitar el punto azul?
- 2. ¿Debo eliminar u ocultar mis anotaciones en MKMapView?
- 3. ¿Cómo elimino todas las anotaciones de MKMapView excepto la anotación de ubicación del usuario?
- 4. ¿Quitar anotaciones de MKMapView con un cierto pinColor?
- 5. MKMapView moviendo anotaciones automáticamente: ¿animarlas?
- 6. ¿Podemos obtener todas las vistas de anotación de MKMapView
- 7. iOS - MKMapView - Anotaciones pueden arrastrar
- 8. Anotaciones MKMapView cambiando/perdiendo el orden?
- 9. Cargar anotaciones para la región visible en MKMapView
- 10. Eliminar todas las imágenes
- 11. Agregar anotaciones a MKMapView en orden de capa específica
- 12. ¿Cómo eliminar todas las referencias de un objeto en Python?
- 13. ¿Cómo eliminar todas las cookies de UIWebView?
- 14. ¿Cómo eliminar todas las relaciones de manytomany?
- 15. ¿Cómo eliminar todas las columnas de JTable?
- 16. Eliminar todas las entidades en Entity Framework
- 17. ¿Cómo eliminar todas las NA de un Vector?
- 18. eliminar todas las variables, excepto las funciones
- 19. Borrar/restablecer un modelo en qt (eliminar todas las filas)
- 20. ¿Cómo crear un MKMapView?
- 21. Obtenga las coordenadas de un punto de mkmapview en iphone
- 22. Eliminar todas las instancias de CKEditor
- 23. En vim, ¿cómo puedo eliminar todas las líneas en un archivo, excepto las últimas 100 líneas?
- 24. UIButton eliminar todas las acciones de destino
- 25. el manejo de grandes cantidades de MKMapView Anotaciones
- 26. Código de optimización para MKMapView - Gran cantidad de anotaciones
- 27. Anotaciones en las interfaces?
- 28. eliminar todas las subcapas de una visión
- 29. Backbone.js - Eliminar todas las vistas secundarias
- 30. Eliminar todas las reglas de CSS
se relaciona este quitar el usuario ubicación también? ¿Qué ocurre si quiero eliminar todas las anotaciones además de la ubicación del usuario? –
No necesita guardar ninguna referencia a la ubicación del usuario. Lea mi respuesta a continuación para obtener más información. –