从GMSMapView中删除GMSPolyline

我使用GoogleMap-IOS-1.8.1 SDK来显示地图。 我必须在地图上绘制可能的GMSPolyline。 在一个特定的事件后,我只能删除所有GMSPolyline,所以我怎么做…? 正如GoogleMaps / documentation / ios所说的那样,使用两种方法来做到这一点。

1. [mapView_ clear]; 2. Set your GMSPolyline's map property to nil 

这里第一种方法也是删除所有标记和覆盖。 这是我不想要的。 而对于第二个我不认为这是保存所有poliline的参考的好方法。 然后将其设置为零。 有没有更好的方法来做到这一点?

在这里,我想要做什么。

 for (GMSPolyline *polylineToremove in mapView_.polyline) { [mapView_ removeOverlay:overlayToRemove]; } 

你需要按照你所说的去做 – 存储一个你已经添加的所有多段线的引用(例如,在一个数组中),然后遍历它们并将它们的map属性设置为零。

你只需要设置GMSPolyline地图属性为零。

 GMSPolyline *polyline; polyline.map = nil; 

这是你需要从GMSMapView中删除任何overlayView的代码。 你也可以用GMSMarkers,GMSPolyline来做。

 for (GMSPolyline *polylineToRemove in arrPolylineAdded){ polylineToRemove.map = nil; polylineToRemove = nil; } 

我刚刚检查:)谷歌地图SDK版本1.9.2。

使用Swift 3.its在我的项目中工作得很好;

var polylineArray = GMSPolyline

 func showPath(polyStr :String) { let path = GMSPath(fromEncodedPath: polyStr) DispatchQueue.main.async { let polyline = GMSPolyline(path: path) //MARK: remove the old polyline from the GoogleMap for root: GMSPolyline in self.polylineArray { if root.userData as! String == "root" { root.map = nil } } polyline.strokeWidth = 2.0 polyline.strokeColor = sDefaultViewColorPrimaryDark polyline.userData = "root" polyline.map = self.mapView let bounds = GMSCoordinateBounds(path: path!) self.mapView!.animate(with: GMSCameraUpdate.fit(bounds,withPadding: 15.0)) self.polylineArray.append(polyline) //self.mapView!.moveCamera(update) } }