Hoe te openen roepen MKAnnotationView programmatisch? (IPhone, MapKit)

stemmen
26

Ik wil het openstellen van de callout voor een MKPinAnnotationViewprogrammatisch. Bv Ik laat 10 pinnen op de kaart, en willen openstellen van de dichtst bij mij. Hoe zou ik dat doen?

Apple heeft aangegeven de 'geselecteerde' parameter voor MKAnnotationView's, maar ontmoedigt het direct instellen (dit niet werkt, probeerde het).

Voor de rest MKAnnotationViewheeft slechts een setHighlighted ( zelfde verhaal ) en kan ShowCalloutmethode ..

Geen hints of dit mogelijk?

De vraag is gesteld op 03/02/2010 om 18:16
bron van user
In andere talen...                            


2 antwoorden

stemmen
77

In je mapViewController een actie maken methode:

- (void)openAnnotation:(id)annotation 
{
    //mv is the mapView
    [mv selectAnnotation:annotation animated:YES];

}

U kunt dan bepalen de dichtstbijzijnde annotatie gebaseerd op de huidige locatie en het lopen van de annotaties in de array.

[mv annotations];

Zodra de dichtstbijzijnde annotatie wordt berekend, bel:

[self openAnnotation:closestAnnotation];

De mapView moet automatisch scrollen om uw annotatie plaatsen in het midden van het scherm gebied.

antwoordde op 26/02/2010 om 05:45
bron van user

stemmen
1

In swift 3 is dit opgewaardeerd tot:

func openAnnotation(annotation: MkAnnotation) {
_ = [mapView .selectAnnotation(annotation, animated: true)]
}

en kan worden aangeroepen met elke annotatie (deze bevat de melding highlight te openen en proberen de annotatie centreren op de kaart)

Bijvoorbeeld met behulp van de tweede aantekening in een hypothetische lijst van annotaties.

openAnnotation(annotation: mapView.annotations[1])
antwoordde op 23/05/2017 om 16:14
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more