2017-03-17 70 views
0

我在尋找一個簡單的導航應用程序,它總是根據用戶的方向旋轉。我已經看到了一些Android的答案,但還沒有發現任何工作在斯威夫特。根據用戶的方向在Swift中旋轉Mapbox地圖

我嘗試了以下方法,但它不適用於我,不確定這是否讓我更接近我正在尋找的東西。

let newCam = MGLMapCamera() 
newCam.heading = 90 
mapView.setCamera(newCam, animated: true) 

我是Xcode和Swift的新手,很難理解,所以對我來說很容易!

+0

什麼會旋轉? – Starlord

+0

地圖本身,所以如果地圖上的某個點相對於用戶的位置朝北,例如,地圖將旋轉,因此無論用戶/手機處於何種方向,該點總是實際指向北方。 – Dan

回答

0

該mapView有一個屬性:direction,你可以設置。更改此屬性的值會立即更新地圖視圖。如果要爲更改設置動畫,請使用-setDirection:animated:方法。或者你可以用下面的方法:

func setCenter(_ centerCoordinate: CLLocationCoordinate2D, zoomLevel: Double, direction: CLLocationDirection, animated: Bool) 

哪裏方向

的地圖,相對於真北度數測量的新方向。

您可以使用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) 
} 
} 

我現在去看牙醫,但會在一個小時左右回來看看。

+0

謝謝對於你的回答,這似乎很有希望。原諒我缺乏經驗,但你能否解釋一下如何更詳細地實施它? – Dan

0
func locationManager(_ manager: CLLocationManager, didUpdateHeading heading: CLHeading) { 
    // set mapView's direction to user's orientation, i.e. magnetic heading 
    mapView.direction = heading.magneticHeading 
}