2016-12-02 9 views
0

Ich habe eine Karte mit 2 Anmerkungen und ich möchte 2 verschiedene Bilder zu jedem von ihnen.So ändern Sie das Bild in eine MKAnnotation mit Swift

Ich weiß, wie man es mit einer Anmerkung macht, aber mein Problem ist mit zwei Anmerkungen.

Hier ist mein Code für einen:

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
     let reuseId = "pin" 

     var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) 


     anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId) 
     anView!.image = nil; 
     anView!.image = UIImage(named:"destinationPin") 


     return anView 

    } 

Und wenn jemand kann ich würde wirklich schätzen, wenn Sie mich erklären, was reuseId ist.

Vielen Dank im Voraus

+0

Was meinst du zwei Anmerkungen? Zwei getrennte Klassen? – sdasdadas

+0

Ich habe zwei Pins auf meiner Karte und ich möchte jeder von ihnen ein anderes Bild haben –

Antwort

1

Zuerst wird, wenn die Anmerkungen auf der Karte hinzufügen, müssen Sie zwischen ihnen unterscheiden. Die einfache Möglichkeit besteht darin, den Tag-Wert festzulegen. Dann können Sie Sie Logik verzweigt wie folgt:

if annotation.tag == 0 { 
    anView!.image = UIImage(named:"destinationPin") 
} else { 
    anView!.image = UIImage(named:"alternateDestinationPin") 
} 

Hinweis MKAnnotation andere Eigenschaften wie Titel hat und koordinieren, die verwendet werden können, Ihre Logik zu verzweigen.

+0

Danke für die Antwort werde ich es so schnell wie möglich überprüfen und lassen Sie wissen, –

+0

Ich verwendete Titel. Ich nehme an, dass Sie Tag als etwas allgemeines richtig stellen? (weil es mir einen Fehler zurückgegeben hat, dass die Annotation kein Member-Tag hat) –

+0

Ja. In meinem aktuellen Projekt bin ich wie Adasdadas vorgeschlagen und habe einen Tag-Wert hinzugefügt. Ich habe vergessen, dass ich das tat, als ich die Antwort –

0

Sie können sie als Optionals umwandeln.

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
    let reuseId = "pin" 

    var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) 

    if let annotation1 = anView as? FirstAnnotation { 
     annotation1.image = UIImage(named: "first.jpg") 
    } else if let annotation2 = anView as? SecondAnnotation { 
     annotation2.image = UIImage(named: "second.jpg") 
    } 
    return anView 
} 

Dies hat den zusätzlichen Vorteil der Typsicherheit und nicht auf Ihr eigenes Wissen zu verlassen, was in einem tag lügt. Wenn Sie zwei separate MKAnnotation Typen haben, sollten Sie sie wirklich als zwei einzelne Klassen unterteilen.

Verwandte Themen