首页 > 解决方案 > 无法在 MKMapview Swift 上显示注释引脚

问题描述

我正在尝试显示当前位置的注释图钉。为此,我编写了以下代码

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    mapView.layer.cornerRadius = 8.0
    imageView.layer.cornerRadius = 8.0

    //mapview settings
    mapView.mapType = MKMapType.standard
    mapView.isZoomEnabled = true
    mapView.isZoomEnabled = true

    // Or, if needed, we can position map in the center of the view
    mapView.center = view.center
    mapView.delegate = self

}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    determineCurrentLocation()
}

func determineCurrentLocation()
{
    locationManager = CLLocationManager()
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.requestAlwaysAuthorization()

    if CLLocationManager.locationServicesEnabled() {
        //locationManager.startUpdatingHeading()
        locationManager.startUpdatingLocation()
    }
}
//Mapview Delegate methods
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let userLocation:CLLocation = locations[0] as CLLocation

    // Call stopUpdatingLocation() to stop listening for location updates,
    // other wise this function will be called every time when user location changes.
    //manager.stopUpdatingLocation()

    let center = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude, longitude: userLocation.coordinate.longitude)
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))

    mapView.setRegion(region, animated: true)

    // Drop a pin at user's Current Location
    let myAnnotation: MKPointAnnotation = MKPointAnnotation()
    myAnnotation.coordinate = CLLocationCoordinate2DMake(userLocation.coordinate.latitude, userLocation.coordinate.longitude);
    myAnnotation.title = "Current location"
    mapView.addAnnotation(myAnnotation)
}

func locationManager(manager: CLLocationManager, didFailWithError error: Error)
{
    print("Error \(error)")
}

但是,它没有在地图视图中显示。有什么建议么?

在此处输入图像描述

标签: iosiphoneswiftannotationsmkmapview

解决方案


您需要NSLocationAlwaysUsageDescription在 Info.plist 中添加键,并在提示中显示一条消息。

在此处输入图像描述


推荐阅读