简体   繁体   English

如何在同一 annotationview (swift3) 下更改 mapkit 中的图钉颜色

[英]how to change pin color in mapkit under the same annotationview (swift3)

I have 2 pins in mapkit, both are under the same annotation view so it makes since that both of the pins are the same color.我在 mapkit 中有 2 个图钉,它们都在同一个注释视图下,因此这两个图钉的颜色相同。 How can I make the pins different colors.我怎样才能使别针不同的颜色。 I would like hello to be red and hellox to be blue.我希望你好是红色,hellox 是蓝色。

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
}}

Subclass MKPointAnnotation to add any custom property that you want, such as a pinTintColor :子类化MKPointAnnotation以添加您想要的任何自定义属性,例如pinTintColor

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
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM