Это локальная переменная (внутри функции)
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
}
}
}