Como abrir o MKANNOTATIONVIEW PROMOCATÁVEL? (iPhone, MAPKIT)
-
25-09-2019 - |
Pergunta
Eu quero abrir a chamada para um MKPinAnnotationView
programaticamente. Por exemplo, eu solto 10 pinos no mapa e quero abrir o mais próximo de mim. Como eu iria fazer isso?
A Apple especificou o parâmetro 'selecionado' para MKAnnotationView's
, mas desencoraja a configuração diretamente (isso não funciona, tentou).
Para o resto MKAnnotationView
só tem um Sethighlighed (mesma história), e pode ShowCallout
método..
Alguma dica, se isso for possível?
Solução
No seu MapViewController, crie um método de ação:
- (void)openAnnotation:(id)annotation
{
//mv is the mapView
[mv selectAnnotation:annotation animated:YES];
}
Você pode determinar a anotação mais próxima com base na localização atual e nas anotações disponíveis na matriz.
[mv annotations];
Depois que a anotação mais próxima for calculada, ligue:
[self openAnnotation:closestAnnotation];
O MapView deve rolar automaticamente para colocar sua anotação no centro da área de exibição.
Outras dicas
Em Swift 3, isso é atualizado para:
func openAnnotation(annotation: MkAnnotation) {
_ = [mapView .selectAnnotation(annotation, animated: true)]
}
e pode ser chamado usando qualquer anotação (isso abrirá a visualização de chamada de anotação e tentará centralizar a anotação no mapa)
Por exemplo, usando a segunda anotação em uma lista hipotética de anotações.
openAnnotation(annotation: mapView.annotations[1])