从GMSMapView中删除GMSPolyline

时间:2014-08-03 08:01:51

标签: ios google-maps google-maps-api-3 google-maps-sdk-ios

我正在使用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];
    }

5 个答案:

答案 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)
    }
}