指南针在MKMapView上不起作用,如果我使用MKMapCamera,则无法正常工作



所以我尝试做3件事。

  1. 有一张地图显示我的位置
  2. 地图应该稍微倾斜,给人一种3d的感觉;就像我们在苹果地图上用两个手指上下滚动一样
  3. 使用指南针旋转地图

我已经在地图上启用了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")
        }

我在这里做错了什么?

你必须用指南针更新相机的航向。这是我目前正在使用的东西:

func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
        self.mapView.camera.heading = newHeading.trueHeading
}

最新更新