【问题标题】:How to remove Annotation from Map in Swift 2 [MapKit]如何在 Swift 2 [MapKit] 中从地图中删除注释
【发布时间】:2015-11-17 21:59:42
【问题描述】:

我可以使用“第一个”按钮在 MapView 上添加注释,但我想添加一个新选项,该选项可以使用“第二个”按钮删除注释。添加注释没有问题,但我无法从地图视图中删除它。有人可以帮我吗?

这是我的代码:

class ViewController: UIViewController {

@IBOutlet weak var mapViewOutlet: MKMapView!

var lm = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()


    self.lm.requestAlwaysAuthorization()
    mapViewOutlet.showsUserLocation = true
    mapViewOutlet.userTrackingMode = MKUserTrackingMode.Follow

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// HERE IS FUNCTION ADDANNOTATION

@IBAction func tagMyCar(sender: UIButton) {

    let coordinate = lm.location?.coordinate


    let CarCoordinates = CarAdnotaion(coordinate: coordinate!)

    mapViewOutlet.addAnnotation(CarCoordinates)

    let region = CLCircularRegion(center: coordinate!, radius: 5, identifier: "My Car")

    region.notifyOnEntry = true
    region.notifyOnExit = true

    lm.startMonitoringForRegion(region)

}

// HERE IS FUNCTION REMOVEANNOTATION

@IBAction func removeAnnotationfromMap(sender: AnyObject) {

    let region = CLCircularRegion(center: (lm.location?.coordinate)!, radius: 5, identifier: "Mój samochód")

    self.mapViewOutlet.removeAnnotation(CarAdnotaion(coordinate: (lm.location?.coordinate)!))

    lm.stopMonitoringForRegion(region)

}

}

【问题讨论】:

    标签: ios iphone swift mapkit swift2


    【解决方案1】:

    我认为问题出在这里:

    self.mapViewOutlet.removeAnnotation(CarAdnotaion(coordinate: (lm.location?.coordinate)!))
    

    您正在删除您刚刚在此声明中创建的注释。相反,将let CarCoordinates 向上移动(并在开头给它更合理的名称和小写字母)。然后对该对象调用 removeAnnotation。

    【讨论】:

      【解决方案2】:

      我有解决问题的方法。有效!

      import UIKit
      import CoreLocation
      import MapKit
      
      class ViewController: UIViewController {
      
      @IBOutlet weak var mapViewOutlet: MKMapView!
      
      let lm = CLLocationManager()
      var carAnnotation: CarAnnotationOnMap?
      var region: CLCircularRegion?
      
      
      override func viewDidLoad() {
          super.viewDidLoad()
      
          self.lm.requestAlwaysAuthorization()
      
      
          mapViewOutlet.userTrackingMode = MKUserTrackingMode.Follow
          mapViewOutlet.showsUserLocation = true
      
      }
      
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
      }
      
      // ADD ANNOTATION ON MAP
      
      @IBAction func tagMyCar(sender: UIButton) {
      
          let coordinates = lm.location?.coordinate
          carAnnotation = CarAnnotationOnMap(coordinates: coordinates!)
      
          region = CLCircularRegion(center: coordinates!, radius: 5, identifier: "My Zone")
      
      
          region!.notifyOnEntry = true
          region!.notifyOnExit = true
          self.lm.startMonitoringForRegion(region!)
      
          mapViewOutlet.addAnnotation(carAnnotation!)
      
      }
      
      // REMOVE ANNOTATION FROM MAP
      
      @IBAction func removePinFromMyCar(sender: AnyObject) {
          self.lm.stopMonitoringForRegion(region!)
          mapViewOutlet.removeAnnotation(carAnnotation!)
      
      }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        相关资源
        最近更新 更多