android - 使用 SKZoonLevelConfiguration 启用自动缩放

标签 android navigation skmaps

情况是这样的,我想设置导航模式,根据当前速度调整缩放路线。看我的代码:

SKZoomLevelConfiguration[] zoomConfgs = new SKZoomLevelConfiguration[4];
zoomConfgs[0] = new SKZoomLevelConfiguration(0.0f, 10.0f, 15.0f);
zoomConfgs[1] = new SKZoomLevelConfiguration(10.0f, 20.0f, 13.0f);
zoomConfgs[2] = new SKZoomLevelConfiguration(20.0f, 60.0f, 10.0f);
zoomConfgs[3] = new SKZoomLevelConfiguration(60.0f, 100.0f, 8.0f);

SKNavigationSettings navSettings = new SKNavigationSettings();
navSettings.setNavigationType(SKNavigationSettings.SKNavigationType.REAL); 
navSettings.setNavigationMode(SKNavigationSettings.SKNavigationMode.CAR); 
navSettings.setDistanceUnit(SKMaps.SKDistanceUnitType.DISTANCE_UNIT_KILOMETER_METERS);
navSettings.setZoomLevelConfigurations(zoomConfgs);
navSettings.setPositionerVerticalAlignment(-0.25f);

SKNavigationManager.getInstance().setNavigationListener(navListener);
SKNavigationManager.getInstance().setMapView(surfaceView);
surfaceView.getMapSettings().setMapDisplayMode(SKMapSettings.SKMapDisplayMode.MODE_3D);
SKNavigationManager.getInstance().startNavigation(navSettings);
isNavigating = true;

事实上,当导航被激活时, map 不会缩放。可能我做错了什么。

最佳答案

在 2.5 中,此 API 存在问题 - 已在 2.6 中修复。

下面是它在 2.6 中如何工作的代码 fragment :

    /** 
     * Launches a navigation on the current route 
     */ 
    private void launchNavigation() { 
        if (TrackElementsActivity.selectedTrackElement != null) { 
            mapView.clearTrackElement(TrackElementsActivity.selectedTrackElement); 

        } 
        // get navigation settings object 
        SKNavigationSettings navigationSettings = new SKNavigationSettings(); 
        // set the desired navigation settings 
        navigationSettings.setNavigationType(SKNavigationType.SIMULATION); 
        navigationSettings.setPositionerVerticalAlignment(-0.25f); 
        navigationSettings.setShowRealGPSPositions(false); 

        SKZoomLevelConfiguration[] configurations = new SKZoomLevelConfiguration[2]; 
        configurations[0] = new SKZoomLevelConfiguration(0, 70, 10); 
        configurations[1] = new SKZoomLevelConfiguration(70, 100, 15); 
        navigationSettings.setZoomLevelConfigurations(configurations); 
        // get the navigation manager object 
        SKNavigationManager navigationManager = SKNavigationManager.getInstance(); 
        navigationManager.setMapView(mapView); 
        // set listener for navigation events 
        navigationManager.setNavigationListener(this); 

        // start navigating using the settings 
        navigationManager.startNavigation(navigationSettings); 
        navigationInProgress = true; 
    } 

注意: SKZoomLevelConfigurations 中设置的速度值(km/h)与 SKNavigationState 中的当前速度(m/s)相关。 onUpdateNavigationState(SKNavigationState navigationState) 方法在与当前速度相关的数据更新时提供通知。

关于android - 使用 SKZoonLevelConfiguration 启用自动缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32126400/

相关文章:

android - 在android应用程序中逐行读取文本文件

java - 如何测试 SQLiteDatabase 查询中的光标是否为空

android - CCAVENUE 支付网关与 Android 应用程序的集成

java - NavigationComponents - 抽屉导航无法导航

jQuery 下拉导航菜单

ios - 由于 SKCoordinateRegion,SKMap 未显示

java - 如何让ImageView在屏幕上随机移动而不脱离屏幕?

css - 修复我的导航栏

Android Skmaps - 不适用于 sdk v.2.3

ios - 获取实时导航建议 Skmaps iOS