改变MKmapView中的引脚颜色会将新的引脚图像以及当前位置转换为旧引脚图像?

时间:2018-03-07 00:29:49

标签: ios swift annotations mkmapview uicolor

我试图将一组针脚的颜色更改为蓝色,另一组针脚保持红色。我在这里跟着一个问题,把我带到了引脚确实改变颜色的地步。但我的当前位置也变成了一个引脚。此外,引脚也会从新徽标转变为旧徽标(实际的图钉图像)。是否有一种方法可以使引脚像新徽标/图像一样保留,并使我当前的位置显示为正常,即蓝色脉冲点。以及将一组引脚改为蓝色而其余引脚保持红色?

请帮忙! 以下是我的代码:

class MyPointAnnotation : MKPointAnnotation {
var pinTintColor: UIColor?
}

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

override func viewDidLoad() {
    super.viewDidLoad()
    map.delegate = self

    let anx = MyPointAnnotation()
    anx.coordinate = CLLocationCoordinate2D(latitude: -36.56795, longitude: 176.56432)
    anx.pinTintColor = .red

    let any = MyPointAnnotation()
    any.coordinate = CLLocationCoordinate2D(latitude: -36.54322, longitude: 176.43221)
    any.pinTintColor = .blue

    map.addAnnotation(anx)
    map.addAnnotation(any)
}

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

1 个答案:

答案 0 :(得分:0)

  

但我的当前位置也变成了一个引脚。

mapView:viewFor...方法中添加以下代码:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation is MKUserLocation {
        return nil
    }