我正在使用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];
}
答案 0 :(得分:4)
您需要按照自己的意思去做 - 存储对您添加的所有折线的引用(例如,在数组中),然后循环遍历它们并设置它们的map
财产到零。
答案 1 :(得分:3)
您只需将GMSPolyline地图属性设置为nil。
GMSPolyline *polyline;
polyline.map = nil;
答案 2 :(得分:0)
这是从GMSMapView中删除任何overlayView所需的代码。 您也可以使用GMSMarkers,GMSPolyline。
for (GMSPolyline *polylineToRemove in arrPolylineAdded){
polylineToRemove.map = nil;
polylineToRemove = nil;
}
我刚刚检查了:)用于Google Map SDK版本1.9.2。
答案 3 :(得分:0)
只需正确使用Google地图:
mapView.clear()
清除已添加到地图的所有标记,包括标记,折线和地面
答案 4 :(得分:-1)
使用Swift 3; 使用此功能首先删除所有折线
import GoogleMaps
var polylineArray = [GMSPolyline]()
for root: GMSPolyline in self.polylineArray
{
if root.userData as! String == "root"
{
root.map = nil
}
}
然后再次投掷折线
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)
}
}