简体   繁体   中英

Not able to show annotation pin on MKMapview Swift

I am trying to show annotation pin for current location. For that I have written following code

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

But, its nothing showing in mapview. Any suggestions?

在此处输入图片说明

You need to add NSLocationAlwaysUsageDescription key in Info.plist with a message to be displayed in the prompt.

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM