如何在地图上删除绘制路线

时间:2016-04-07 14:07:10

标签: swift

我已使用此功能在地图上实现了绘制路线:

func drawRouteOnMap(sourceLocation sourceLocation: CLLocation, destinationLocation: CLLocation) {
        drawMapActivated = true
        let sourcePlacemark = MKPlacemark(coordinate: sourceLocation.coordinate, addressDictionary: nil)
        let destinationPlacemark = MKPlacemark(coordinate: destinationLocation.coordinate, addressDictionary: nil)

        let sourceMapItem = MKMapItem(placemark: sourcePlacemark)
        let destinationMapItem = MKMapItem(placemark: destinationPlacemark)

        let destinationAnnotation = MKPointAnnotation()
        destinationAnnotation.title = "ATM"

        if let location = destinationPlacemark.location {
            destinationAnnotation.coordinate = location.coordinate
        }

        self.mapView.showAnnotations([destinationAnnotation], animated: true)

        let directionRequest = MKDirectionsRequest()
        directionRequest.source = sourceMapItem
        directionRequest.destination = destinationMapItem
        directionRequest.transportType = .Automobile

        let directions = MKDirections(request: directionRequest)

        directions.calculateDirectionsWithCompletionHandler {
            (response, error) -> Void in

            guard let response = response else {
                if let error = error {
                    print("Error: \(error)")
                }

                return
            }

            let route = response.routes[0]
            self.mapView.addOverlay((route.polyline), level: MKOverlayLevel.AboveRoads)

            let rect = route.polyline.boundingMapRect
            self.mapView.setRegion(MKCoordinateRegionForMapRect(rect), animated: true)
        }

    }

但问题是,当我想绘制另一条路线时,它会覆盖之前的路线,所以看起来非常难看。我想删除旧的,并绘制一个新的,如何做到这一点。

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:6)

我试过这样的话:

mapView.removeOverlays(mapView.overlays)

它现在有效。