我有一个MapView,显示了一些带有displayPriority = .defaultHight
的注解,以允许自动聚类。
Map视图还显示默认显示优先级为required
的当前用户位置。
这导致当用户位置注解和我的注解非常接近时,它们会被隐藏。
我想通过将用户位置注解的显示优先级设置为defaultLow
来更改此行为。
我试着使用这种方法:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if annotation is MKUserLocation {
let userView = mapView.view(for: annotation)
userView?.displayPriority = .defaultLow
return userView
}
return mapView.view(for: annotation)
}
但是userView
总是nil,因此我对displayPriority
的修改不适用。
您知道如何更改MKUserLocation
注解视图的displayPriority
吗?
2条答案
按热度按时间bogh5gae1#
我花了几个小时试图通过定制默认用户位置注解来解决这个问题,但无济于事。
相反,作为一种解决方案,我制作了自己的位置标记并隐藏了默认的位置注解。
将注解变量添加到
viewController
:在
viewDidLoad
中,隐藏默认位置标记:更新
didUpdateLocations
中的位置:然后在
viewFor annotation
中自定义注解视图:我将注解的
displayPriority
更改为.defaultLow
,以确保它不会隐藏其他注解。如果有帮助就告诉我!
0sgqnhkj2#
如果有人还在纠结于这个问题,可以使用
func mapView(_ mapView: MKMapView, didAdd views: [MKAnnotationView])
:这样,您仍然可以使用系统为
MKUserLocation
提供的视图,而不必手动构造自己的视图。