MapKit覆盖Swift问题

时间:2015-02-20 02:56:45

标签: ios swift mapkit mkoverlay

我目前无法清除叠加层。我想清除行进的叠加层,然后重新开始。我已经查看了大量不同的代码行,但似乎无法弄明白。你能帮我解决一下吗?我是Swift的新手,所以请玩得很好:)。

import UIKit
import CoreLocation
import MapKit

class ViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {

    @IBOutlet weak var theMap: MKMapView!
    @IBOutlet weak var theLabel: UILabel!
    @IBOutlet weak var startTracking: UIButton!
    @IBOutlet weak var stopTracking: UIButton!
    @IBOutlet weak var clearTrack: UIButton!

    var polyline:MKPolyline = MKPolyline()
    var manager:CLLocationManager!
    var myLocations: [CLLocation] = []

    func clearTrack(sender: UIButton){
        //label.text = String(myLocations.count)
        //stopTracking()
       theMap.removeOverlay (polyline)  
    }

    func stopTracking(sender: UIButton) {
        manager.stopUpdatingLocation()
        myLocations = []
        println("Stop making a line")
    }

    func startTracking(sender: UIButton) {
        manager.startUpdatingLocation()
        myLocations = []
        println("Making a line")
    }


    override func viewDidLoad() {
        super.viewDidLoad()

        //Setup our Location Manager
        manager = CLLocationManager()
        manager.delegate = self
        manager.desiredAccuracy = kCLLocationAccuracyBest
        manager.requestAlwaysAuthorization()
        manager.startUpdatingLocation()

        //Setup our Map View
        theMap.delegate = self
        theMap.mapType = MKMapType.Hybrid
        theMap.showsUserLocation = true
    }

    func locationManager(manager:CLLocationManager, didUpdateLocations locations:[AnyObject]) {
        theLabel.text = "\(locations[0])"
        myLocations.append(locations[0] as CLLocation)

        let spanX = 0.002
        let spanY = 0.002
        var newRegion = MKCoordinateRegion(center: theMap.userLocation.coordinate, span: MKCoordinateSpanMake(spanX, spanY))
        theMap.setRegion(newRegion, animated: true)

        if (myLocations.count > 1){
            var sourceIndex = myLocations.count - 1
            var destinationIndex = myLocations.count - 2

            let c1 = myLocations[sourceIndex].coordinate
            let c2 = myLocations[destinationIndex].coordinate
            var a = [c1, c2]
            var polyline = MKPolyline(coordinates: &a, count: a.count)
            theMap.addOverlay(polyline)
        }
    }

    func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {

        if overlay is MKPolyline {
            var polylineRenderer = MKPolylineRenderer(overlay: overlay)
            polylineRenderer.strokeColor = UIColor.yellowColor()
            polylineRenderer.lineWidth = 3
            return polylineRenderer
        }
        return nil
    }
}

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用:

func clearTrack(sender: UIButton){
    theMap.removeOverlays(theMap.overlays)
}