我正在使用适用于 iOS 的 Mapbox SDK,并决定实现一项功能,允许通过点击按钮在坚持北向的地图和遵循设备方向的地图之间进行切换。
目前,我可以开始“跟随”用户的方向并将相机向北旋转。这是我正在使用的代码
var showsToNorth = false
override func viewDidLoad() {
super.viewDidLoad()
...
// starts rotating map based on device direction when map opens
mapView.viewport.transition(to: mapView.viewport.makeFollowPuckViewportState(options: .init(pitch: 0)))
...
}
@objc
func currentLocationButtonAction() {
showsToNorth.toggle()
if showsToNorth {
var cameraOption = CameraOptions(cameraState: mapView.cameraState)
cameraOption.bearing = 0
cameraOption.center = mapView.location.latestLocation?.coordinate
mapView.camera.ease(to: cameraOption, duration: 0)
} else {
mapView.location.locationProvider.startUpdatingHeading()
mapView.viewport.transition(to: mapView.viewport.makeFollowPuckViewportState(options: .init(pitch: 0)))
}
}
当代码在“true”情况下执行时,就会出现问题;地图正确地向北旋转,但设备一旋转,它就会自动继续跟踪设备的方向。我已经尝试了很多方法,但仍然找不到任何解决方案。
非常感谢您的帮助。
如果您提供一些您尝试过的方法,这将会有所帮助,但它似乎就像禁用旋转,而
showsToNorth
是true
应该解决您的问题:
override var shouldAutorotate: Bool {
return !showsToNorth
}