Компас не будет работать на MKMapView, если я использую MKMapCamera
Поэтому я пытаюсь сделать 3 вещи.
- Есть карта, которая показывает мое местоположение.
- Карта должна быть немного наклонена, чтобы дать ощущение 3d; так же, как когда мы прокручиваем вверх и вниз двумя пальцами на карте яблок.
- Используйте компас, чтобы вращать карту.
Я включил userTrackingMode на карте, и карта вращается с компасом, но если я установлю MKMapCamera на карте, компас не будет работать.
Вот мой код
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
mapView.setUserTrackingMode(.FollowWithHeading, animated: true)
locationManager.startUpdatingLocation()
}
func locationManager(manager: CLLocationManager, didUpdateToLocation newLocation: CLLocation, fromLocation oldLocation: CLLocation) {
let userCordinate = CLLocationCoordinate2D(latitude: newLocation.coordinate.latitude, longitude: newLocation.coordinate.longitude)
let eyeCordinate = CLLocationCoordinate2D(latitude: newLocation.coordinate.latitude - 0.021078, longitude: newLocation.coordinate.longitude - 0.04078 )
let mapCamera = MKMapCamera(lookingAtCenterCoordinate: userCordinate, fromEyeCoordinate: eyeCordinate, eyeAltitude: 1400)
mapView.setCamera(mapCamera, animated: true)
print("Camera set")
}
Что я здесь не так делаю?
1 ответ
Вы должны обновить курс камеры с помощью компаса. Вот что я сейчас использую:
func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
self.mapView.camera.heading = newHeading.trueHeading
}