Existe uma maneira simples de excluir todas as anotações em um mapa sem iterar por todas as anotações exibidas em Objective-c?
fonte
Existe uma maneira simples de excluir todas as anotações em um mapa sem iterar por todas as anotações exibidas em Objective-c?
Sim aqui é como
[mapView removeAnnotations:mapView.annotations]
No entanto, a linha de código anterior removerá todas as anotações de mapa "PINS" do mapa, incluindo o pino de localização do usuário "Blue Pin". Para remover todas as anotações do mapa e manter o pino de localização do usuário no mapa, existem duas maneiras de fazer isso
Exemplo 1, retenha a anotação de localização do usuário, remova todos os pinos, adicione o pino de localização do usuário de volta, mas há uma falha com esta abordagem, isso fará com que o pino de localização do usuário pisque no mapa, devido à remoção do pino e depois adicioná-lo costas
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if ( userLocation != nil ) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
Exemplo 2, eu pessoalmente prefiro evitar a remoção do pino do usuário de localização em primeiro 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;
}
Esta é a maneira mais simples de fazer isso:
fonte
Veja como remover todas as anotações, exceto a localização do usuário, escrita explicitamente porque imagino que irei procurar esta resposta novamente:
fonte
Isso é muito semelhante à resposta de Sandip, exceto que ele não adiciona novamente a localização do usuário, de forma que o ponto azul não pisca novamente.
fonte
Você não precisa salvar nenhuma referência à localização do usuário. Tudo o que é necessário é:
E contanto que você tenha
mapView.showsUserLocation
definido comoYES
, você ainda terá a localização do usuário no mapa. Configura esta propriedade paraYES
basicamente solicitar que a visualização do mapa comece a atualizar e buscar a localização do usuário, para mostrá-la no mapa. DosMKMapView.h
comentários:fonte
Versão Swift:
fonte
Swift 3
fonte
Swift 2.0 Simples e o melhor:
fonte
Para remover um tipo de subclasse, você pode fazer
onde
PlacesAnnotation
está uma subclasse deMKAnnotation
fonte