ios - 如何在同一注释 View (swift3)下更改mapkit中的引脚颜色

标签 ios swift swift3 mapkit mkannotationview

我在 mapkit 中有 2 个图钉,它们都在相同的注释 View 下,因为两个图钉的颜色相同。我怎样才能让别针有不同的颜色。我希望 hello 是红色的,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
}}

最佳答案

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

关于ios - 如何在同一注释 View (swift3)下更改mapkit中的引脚颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41815315/

相关文章:

objective-c - map 预览图

ios - iOS 中的动态库和动态框架有什么区别?

ios - 谁能帮我在 Swift 3 中传递数据?

ios - 通过代码生成导航栏 View (不使用 Storyboard)

ios - 如何在 UITableViewCell 中显示红色 "Cancel"按钮?

iphone - 以编程方式添加 TabBarController

ios - 在 SwiftUI 中切换更改后更新数组

ios - 单击更改多个 UIButton 的背景颜色

swift - 协议(protocol)中的继承是什么

ios - 与 VPN 服务器协商失败(NEVPNProtocolIPSec、Swift 3.0.2)