添加和删​​除标记时重新加载Google Map View

时间:2018-10-30 02:23:29

标签: ios swift google-maps

我们正在用Swift编写代码来创建带有UI按钮的应用程序。这些UI按钮将根据其状态添加或删除标记。因为我们希望将按钮层叠在Google地图的顶部,所以我们有两个视图控制器。顶视图控制器包含一个按钮。当按下按钮时,我们要删除状态为“不良”的标记。

这是我们删除标记的代码:

func showOnlyGood(){
   mapView.clear() //this is the google map (GMSMapView.map)
   for x in arrayOfGood { //Array of good markers
      x.map = mapView //Set good markers to show
   }
   for y in arrayOfBad { //Array of bad markers
      y.map = nil //removes markers from map
   }
}

如果函数调用在viewDidLoad()中,则Google地图会更新,但是当我们使用按钮在顶视图控制器中调用该函数时,它不会相应地更新地图。

我们认为这与刷新Google地图视图有关,并且已经尝试了许多不同的解决方案,但是Google地图视图仅显示了viewDidLoad()最初的内容。

1 个答案:

答案 0 :(得分:1)

首先,如果只希望将按钮分层放置在地图顶部,则只需在将地图添加到视图后将按钮添加到视图即可;不要创建第二个视图控制器。您的问题很可能是由这种笨拙的设置引起的。您的操作方法中也没有@objc前缀,这肯定会阻止按钮执行其操作。

@objc func updateButtons() {
    mapView.clear() // clear the map
    for i in someArray {
        let marker = GMSMarker()
        // configure parameters
        marker.map = mapView
    }
}

该方法将更新您地图的标记。即使您想更改样式,也[永远]不需要刷新地图。