根据用户在 Swift 中的方向旋转 Mapbox 地图

Dan*_*Dan 2 xcode mapkit ios mapbox swift

我正在寻找一个简单的导航应用程序,它总是根据用户的方向旋转。我已经看到了一些 Android 的答案,但还没有找到任何适用于 Swift 的东西。

我尝试了以下方法,但它对我不起作用,并且不确定这是否让我更接近我正在寻找的东西。

let newCam = MGLMapCamera()
newCam.heading = 90
mapView.setCamera(newCam, animated: true)
Run Code Online (Sandbox Code Playgroud)

我对 Xcode 和 Swift 还很陌生,理解起来有困难,所以请放轻松!

Mag*_*nas 5

mapView 有一个属性:direction,您可以设置。更改此属性的值会立即更新地图视图。如果您想以动画方式进行更改,请改用该-setDirection:animated:方法。或者您可以使用以下方法:

func setCenter(_ centerCoordinate: CLLocationCoordinate2D, zoomLevel: Double, direction: CLLocationDirection, animated: Bool)
Run Code Online (Sandbox Code Playgroud)

方向在哪里

地图的新方向,以相对于正北的度数进行测量。

您可以定期调用此函数,使用 CLLocationManager 上的 startUpdatingHeading 方法计算距北的偏移量。如果您需要的话,此方法还有另一个版本,带有完成处理程序。

** 编辑 **

您可以使用以下代码来提取手机的方向。它在此处打印到控制台(自然地从真实设备),但您可以获取数字(度)并在代码中确定设备指向的距离有多远。

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

var locationManager:CLLocationManager!

override func viewDidLoad() {
    super.viewDidLoad()

    locationManager = CLLocationManager()
    locationManager.delegate = self
    locationManager.startUpdatingHeading()
}

func locationManager(_ manager: CLLocationManager, didUpdateHeading heading: CLHeading) {

    print(heading.magneticHeading)
}
}
Run Code Online (Sandbox Code Playgroud)

我现在去看牙医,但大约一个小时后会回来检查。