删除Google Map的折线

时间:2018-12-26 17:02:00

标签: ios swift google-maps

我想在google map中删除d折线,但是我仍然尝试了一切,正如您从代码中看到的一样,我还检查了调试区域,rectangular.map为nil?但它仍然出现在地图上,并且我不希望用户使用clear方法是可以正常工作的,但是我在地图上有其他要删除的元素

 DispatchQueue.main.async {
        let path = GMSMutablePath()
        path.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
        path.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
        path.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
        path.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))
        path.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
        let rectangle = GMSPolyline(path: path)
        var oldPolylineArr = [GMSPolyline]()
        oldPolylineArr.append(rectangle)

        if self.count == 0 {
            rectangle.map = self.googelMap
            print("count \(self.count)")
            self.count = 1
        }
        else if self.count == 1 {
            //rectangle.map = nil
            //path.removeAllCoordinates()
            self.count = 0
            for p in (0 ..< oldPolylineArr.count) {
                oldPolylineArr[p].map = nil
            }
        }
    }

}

1 个答案:

答案 0 :(得分:2)

这是局部变量(在函数内部)

var oldPolylineArr = [GMSPolyline]()
oldPolylineArr.append(rectangle)

您需要将其设为实例var,因为它拥有最后一个实例,因此请删除此行

var oldPolylineArr = [GMSPolyline]()

然后清除所有操作

oldPolylineArr.forEach { $0.map = nil }

之后,设置新创建的折线

rectangle.map = self.googelMap

这将添加一条折线并删除旧的

class ViewController:UIViewController {

    var oldPolylineArr = [GMSPolyline]() 

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    func addPolyAndRemoveOld() {

        DispatchQueue.main.async { 
            // remove here
            oldPolylineArr.forEach { $0.map = nil }

            // add new
            let path = GMSMutablePath()
            path.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
            path.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
            path.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
            path.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))
            path.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
            let rectangle = GMSPolyline(path: path) 
            oldPolylineArr.append(rectangle)
            rectangle.map = self.googelMap
         }
      }
 }