NavigationManager 的 startNavigation() 有空白地图

NavigationManager's startNavigation() has blank map

我正在尝试使用 SKNavigationManager 的 startNavigation(navigationSettings) 进行逐向导航。有趣的是,它在 'Simulation' 模式下完美运行,但当我切换到 'Real' 模式时,屏幕上没有地图。只是地图没有绘制在屏幕上,但其余部分(如注释和其他内容)已填充并且工作正常。

我使用过 SKToolsNavigatoinManager,它工作正常,但我不想使用它,因为它有很多 UI 接口,这些接口对我的应用程序没有用。

感谢任何帮助。

这是我正在使用的设置和 navigationManager 代码

SKNavigationSettings navigationSettings = new SKNavigationSettings();
SKNavigationManager navigationManager = SKNavigationManager.getInstance();
navigationSettings.setNavigationType(SKNavigationSettings.SKNavigationType.REAL);
navigationSettings.setNavigationMode(SKNavigationSettings.SKNavigationMode.PEDESTRIAN);
navigationManager.setMapView(navMapView);
navigationManager.startNavigation(navigationSettings);

如果我不使用 navigationManager.setMapView(navMapView);我有不同的看法。

1. This is how the screen looks like after I start navigation
2. This is how the screen looks like before navigation

地图被绘制到屏幕上,它刚好以大西洋中部的点 [0,0] 为中心,因此屏幕是蓝色的。要让相机跟随当前位置,您必须执行以下 2 个步骤:

  1. 在您的 SKMapView 对象上将 follow positions 设置为 true:navMapView.getMapSettings().setFollowPositions(true);

  2. 创建一个 SKCurrentPositionProvider 并设置 SKCurrentPositionListener

    SKCurrentPositionProvider positionProvider = new SKCurrentPositionProvider(activity);
    positionProvider.setCurrentPositionListener(new SKCurrentPositionListener(){
    
        @Override
        public void onCurrentPositionUpdate(SKPosition currentPosition) {
            SKPositionerManager.getInstance().reportNewGPSPosition(currentPosition);
    
        }
    
    });
    positionProvider.requestLocationUpdates(true, true, false);