如何以编程方式为MapKit标记引脚设置“select with callout”状态

问题描述 投票:0回答:1

2017年,MKMarkerAnnotationView宣布取代MKPinAnnotationView。正如这个WWDC video在12:21描述的那样,MKMarkerAnnotationView有三种状态:

  1. 正常
  2. 选择了标注

如何以编程方式设置“选择带标注”状态,以便它在WWDC视频中显示?这似乎应该是一个超级直接的事情,但我在MapKit文档中看不到任何东西,我可以让它可靠地工作的唯一方法是:

enter image description here

文档链接:

  1. MKAnnotationView
  2. MKMarkerAnnotationView
ios mapkit
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.