如何以编程方式设置MapKit标记图钉的“已选择标注”状态

时间:2018-09-17 12:46:04

标签: ios mapkit

2017年, public static XmlNode RequirementMinTime { get; set; } 宣布将取代MKMarkerAnnotationView。如WWDC video在12:21所述,MKPinAnnotationView具有三种状态:

  1. 普通
  2. 已选择
  3. 通过标注选择

您如何以编程方式设置“已选择带有标注的”状态,以便使其像在WWDC视频中一样显示?看来这应该是一件非常简单的事情,但是我在MapKit文档中绝对看不到任何东西,我可以使其可靠运行的唯一方法是:

enter image description here

文档链接:

  1. MKAnnotationView
  2. MKMarkerAnnotationView

1 个答案:

答案 0 :(得分:1)

您可以使用canShowCallout属性。

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

    let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKMarkerAnnotationView
    if pinView == nil {
        pinView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        pinView?.canShowCallout = true

        let rightButton: AnyObject! = UIButton(type: UIButtonType.detailDisclosure)
        pinView?.rightCalloutAccessoryView = rightButton as? UIView

    }
    else {
        pinView?.annotation = annotation
    }
    return pinView
}

您需要选择注释以设置“已选择标注”状态。

mapView.selectAnnotation(annotation, animated: true)