我要始终显示callout
中的annotationview
,这意味着在加载mapview
时,将显示所有注释的callout
。
我该怎么做?
答案 0 :(得分:1)
在任何时候,地图上只能有一个标注。框架在要显示新的标注时会重用之前的标注,此处显示的是在添加注释时单个标注视图,就像这样
let annotation = MKPointAnnotation()
annotation.title = "Title for Callout"
mapView.addAnnotation(annotation)
这将导致委托方法viewForAnnotation
被触发:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
let view = MKAnnotationView(annotation: annotation, reuseIdentifier: "AnnotId")
view.canShowCallout = true
return view
}
框架将添加上面返回的视图,并触发didAddViews
委托,现在通过选择注释来显示标注视图,就像这样
func mapView(_ mapView: MKMapView, didAdd views: [MKAnnotationView]) {
if let annotation = views.first(where: { $0.reuseIdentifier == "AnnotId" })?.annotation {
mapView.selectAnnotation(annotation, animated: true)
}
}
答案 1 :(得分:0)
memcmp()
memcmp()
mapView.addAnnotation(myAnnotation)
添加私有功能mapView.selectAnnotation(myAnnotation, animated: false)
private func bringMyAnnotationToFront()
实现两个方法:
if let myAnnotation = mapView.annotations.first(where: { $0 is MKPointAnnotation }) { mapview.selectAnnotation(myAnnotation, animated: false) }
,bringMyAnnotationToFront