无法在MKMapview Swift

时间:2018-05-15 06:12:38

标签: ios iphone swift annotations mkmapview

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

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)")
}

但是,它在mapview中没有任何显示。有什么建议吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

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

enter image description here