如何更改mapbox注释视图?

问题描述 投票:2回答:2

我添加了几个带有自定义注释视图的注释,但我只引用了标记而不是注释视图本身。那么如何更改注释视图元素呢?

ios swift mapbox
2个回答
4
投票

您应该将注释存储在变量中,当您想要更改它们的视图时,只需使用mapView.removeAnnotation(...)将它们从地图中删除,然后使用mapView.addAnnotation(...)再次添加它。

方法

func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView? {
}

将被调用,您应该返回已更改的视图。

请注意,出于性能原因,如果您有大量注释,则不应使用addAnnotation()或removeAnnotation(),而应使用addAnnotations()和removeAnnotations()


0
投票

我将所有注释视图添加到字典中

我创建了一个全局字典变量

var annotationViews = [CustomAnnotation:CustomAnnotationView]()

然后在我的委托函数中创建每个注释视图

func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView?

我把它添加到我的字典中

 let annotationView = MyAnnotationView(reuseIdentifier: rid, size: CGSize(width: 45, height: 45), annotation: annotation)
 annotationViews[annotation as! MyAnnotation] = annotationView

后来当我想在注释视图中更改文本视图的文本时,我在字典调用中使用了我的注释。这返回了与之对应的注释视图。

self.annotationViews[anno]?.textView.text = "My new text view status"

不需要删除和重新添加。


你可以插入一些较小的东西作为字典的键,比如annotation.uid或annotation.name等。我只是使用了整个注释对象

© www.soinside.com 2019 - 2024. All rights reserved.