使用 MapBox for iOS 在设备旋转时停止旋转地图

问题描述 投票:0回答:1

我正在使用适用于 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”情况下执行时,就会出现问题;地图正确地向北旋转,但设备一旋转,它就会自动继续跟踪设备的方向。我已经尝试了很多方法,但仍然找不到任何解决方案。

非常感谢您的帮助。

ios swift uikit mapbox mapbox-ios
1个回答
0
投票

如果您提供一些您尝试过的方法,这将会有所帮助,但它似乎就像禁用旋转,而

showsToNorth
true
应该解决您的问题:

override var shouldAutorotate: Bool {
    return !showsToNorth
}
© www.soinside.com 2019 - 2024. All rights reserved.