Показать текущее местоположение без использования CLLocationManager
Я новичок в 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?
1 ответ
Вы спрашивали разрешения у пользователя, чтобы ваше приложение могло использовать службы определения местоположения? Документы в Apple могут помочь вам в этом. Посмотрите на пример кода ниже, чтобы начать:
private func beginLocationUpdates() {
// Request location access permission
_locationManager!.requestWhenInUseAuthorization()
// Start observing location
_locationManager!.startUpdatingLocation()
}