swift2 如何在Swift 2 [MapKit]中从Map中删除注解

bmp9r5qi  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(291)

我可以使用“第一个”按钮在Map视图上添加注解,但我想添加一个新选项,该选项允许使用“第二个”按钮删除注解。我添加注解没有问题,但我无法从Map视图中删除注解。有人能帮助我吗?
下面是我的代码:

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)

}

}
0kjbasz6

0kjbasz61#

我认为问题就在这里:

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

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

hec6srdp

hec6srdp2#

我有办法解决我的问题。它很有效!

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!)

}

}

相关问题