Удаление Полилинии для Google Map - PullRequest
0 голосов
/ 26 декабря 2018

Я хочу удалить d ломаную линию в карте Google, но она остается. Я должен попробовать все, как вы можете видеть из кода, также я проверяю область отладки, и файл rectangle.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 голосов
/ 26 декабря 2018

Это локальная переменная (внутри функции)

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
         }
      }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...