1

我是 iOS 新手,我有一个关于查找当前用户位置的问题。我正在阅读 Apple 文档:

在地图上显示用户的当前位置 地图套件包括对在地图上显示用户当前位置的内置支持。要显示此位置,请将地图视图对象的 showsUserLocation 属性设置为 YES。这样做会导致地图视图使用核心位置来查找用户的位置,并将 MKUserLocation 类型的注释添加到地图中。

向地图添加 MKUserLocation 注释对象由委托以与自定义注释相同的方式报告。如果要将自定义注释视图与用户位置相关联,则应从委托对象的 mapView:viewForAnnotation: 方法返回该视图。如果要使用默认注释视图,请从该方法返回 nil。要了解有关向地图添加注释的更多信息,请参阅注释地图。

听起来很棒。但是之后...

import UIKit
import MapKit

class ViewController: UIViewController {

    @IBOutlet weak var mapView: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()

        //set initial location in Honolulu
        //let initialLocation = CLLocation(latitude: 21.282778, longitude: -157.829444)

        mapView.showsUserLocation = true
        let initialLocation = mapView.userLocation.location

        centerMapOnLocation(initialLocation)

        //        let artwork = Artwork(title: "King David Kalakaua", locationName: "Waikiki Gateway Park", discipline: "Sculpture", coordinate: CLLocationCoordinate2D(latitude: 21.283921, longitude: -157.831661))

        //        mapView.addAnnotation(artwork)
        //
        //        mapView.delegate = self
    }

    let regionRadius: CLLocationDistance = 1000
    func centerMapOnLocation(location: CLLocation){
        let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, regionRadius * 2.0, regionRadius * 2.0)
        mapView.setRegion(coordinateRegion,animated:true)
    }
}

我有一个fatal error: unexpectedly found nil while unwrapping an Optional value. 我不明白为什么。如果我手动设置位置 - 当然没问题。但是在文档中写道,它将在地图上添加注释。没有添加注释,它会崩溃。不使用 CLLocationManager 就不能获取用户坐标吗?

4

1 回答 1

1

您是否向用户请求了允许您的应用使用位置服务的权限?Apple 的文档可以帮助您解决这个问题。查看下面的示例代码以帮助您入门:

private func beginLocationUpdates() {
    // Request location access permission
    _locationManager!.requestWhenInUseAuthorization()

    // Start observing location
    _locationManager!.startUpdatingLocation()
}
于 2015-05-26T18:08:27.400 回答