2017-01-24 1 views
0

Ich habe 2 Pins in mapkit, beide sind unter der gleichen Anmerkungsansicht, so dass es seit dem, dass beide Pins die gleiche Farbe sind. Wie kann ich die Stifte verschiedene Farben machen? Ich möchte, dass Hallo rot und Hellox blau ist.wie Pin-Farbe in Mapkit unter der gleichen Annotationview ändern (swift3)

import UIKit 
import MapKit 

class ViewController: UIViewController, MKMapViewDelegate { 

@IBOutlet var jmap: MKMapView! 

override func viewDidLoad() { 
    jmap.delegate = self; 
    let hello = MKPointAnnotation() 
    hello.coordinate = CLLocationCoordinate2D(latitude: 40, longitude: -73) 
    jmap.addAnnotation(hello) 
    let hellox = MKPointAnnotation() 
    hellox.coordinate = CLLocationCoordinate2D(latitude: 34, longitude: -72) 
    jmap.addAnnotation(hellox) 
} 

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 
    let annotationView = MKPinAnnotationView() 
    annotationView.pinTintColor = .blue 
    return annotationView 
}} 

Antwort

4

Subclass MKPointAnnotation jede benutzerdefinierte Eigenschaft hinzufügen, die Sie, wie ein pinTintColor wollen:

class MyPointAnnotation : MKPointAnnotation { 
    var pinTintColor: UIColor? 
} 

class ViewController: UIViewController, MKMapViewDelegate { 
    @IBOutlet var jmap: MKMapView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     jmap.delegate = self 

     let hello = MyPointAnnotation() 
     hello.coordinate = CLLocationCoordinate2D(latitude: 40, longitude: -73) 
     hello.pinTintColor = .red 

     let hellox = MyPointAnnotation() 
     hellox.coordinate = CLLocationCoordinate2D(latitude: 34, longitude: -72) 
     hellox.pinTintColor = .blue 

     jmap.addAnnotation(hello) 
     jmap.addAnnotation(hellox) 
    } 

    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 
     var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "myAnnotation") as? MKPinAnnotationView 

     if annotationView == nil { 
      annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "myAnnotation") 
     } else { 
      annotationView?.annotation = annotation 
     } 

     if let annotation = annotation as? MyPointAnnotation { 
      annotationView?.pinTintColor = annotation.pinTintColor 
     } 

     return annotationView 
    } 
} 
Verwandte Themen