我是iOS新手,我对查找当前用户位置有疑问。我正在阅读Apple文档:
在地图地图套件中显示用户的当前位置包括 内置支持显示用户的当前位置 地图。要显示此位置,请设置您的showsUserLocation属性 将视图对象映射到YES。这样做会导致地图视图使用Core 找到用户位置的位置并添加类型注释 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的情况下获取用户坐标?
答案 0 :(得分:1)
您是否已向用户请求权限以让您的应用使用位置服务? Apple的文档可以帮助您解决这个问题。请看下面的示例代码,以帮助您入门:
private func beginLocationUpdates() {
// Request location access permission
_locationManager!.requestWhenInUseAuthorization()
// Start observing location
_locationManager!.startUpdatingLocation()
}