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?

Foi útil?

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])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top