如何更改mapbox注释视图?

时间:2018-03-07 23:45:07

标签: ios swift mapbox

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

2 个答案:

答案 0 :(得分:4)

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

方法

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

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

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

答案 1 :(得分: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"

无需删除和重新添加。


您可能会插入一些较小的内容作为字典的键,例如注解.uid或注解.name之类的内容。我只是使用了整个注释对象

相关问题