标题模式旋转地图

时间:2016-12-14 16:13:40

标签: android skmaps

我正在使用Android的SKMaps v3.0 SDK,我尝试将用户标题模式更改为Rotating_Map,以便让用户能够使用标题位置旋转地图。

这是我的代码:

    private void followTheUserWithHeading(int transitionTime){
    mapView.getMapSettings().setCurrentPositionShown(true);
    mapView.getMapSettings().setFollowPositions(true);
    mapView.getMapSettings().setHeadingMode(SKMapSettings.SKHeadingMode.ROTATING_MAP);
    mapView.animateToBearing(1.0f,true,transitionTime);
    mapView.centerOnCurrentPosition(17,true,500);
}

在onRouteCalculationCompleted方法中调用followTheUserWithHeading()。

不幸的是,地图不会随着手机方向而旋转。

N.B。 :用户圆锥是可见的,使用SKHeadingMode.ROUTE时不是这种情况。所以看起来我的代码并不是完全废话......我也试过ROTATING_HEADING而不是更好。

非常感谢:)

3 个答案:

答案 0 :(得分:3)

此功能仅在使用步行导航模式时有效(通过使用类似navigationSettings.setNavigationMode(SKNavigationSettings.SKNavigationMode.PEDESTRIAN)的调用设置;) 为了启用该功能,您需要确保调用mapView.getMapSettings()。setHeadingMode(SKMapSettings.SKHeadingMode.ROTATING_MAP); 刚启动导航后(navigationManager.startNavigation(navigationSettings);) 我附上了一个显示工作功能的视频: https://www.dropbox.com/s/onnsbeavldxvdpu/20161221_PedestrianNavigation_RotatingMap.mp4?dl=0

答案 1 :(得分:1)

此功能仅适用于行人导航。

答案 2 :(得分:0)

好的,我终于找到了解决问题的方法......

这不是行人模式的问题。为了使ROTATIN_MAP正常工作,您必须实现所有传感器事件。

请参阅Android演示项目以获取更多详细信息,但这里是代码片段

 private void setHeading(boolean enabled) {
    if (enabled) {
        headingOn = true;
        mapView.getMapSettings().setHeadingMode(SKHeadingMode.ROTATING_MAP);
        startOrientationSensor();
    } else {
        headingOn = false;
        mapView.getMapSettings().setHeadingMode(SKMapSettings.SKHeadingMode.NONE);
        stopOrientationSensor();
    }
}

/**
 * Activates the orientation sensor
 */
private void startOrientationSensor() {
    orientationValues = new float[3];
    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    Sensor orientationSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
    sensorManager.registerListener(this, orientationSensor, SensorManager.SENSOR_DELAY_UI);
}

/**
 * Deactivates the orientation sensor
 */
private void stopOrientationSensor() {
    orientationValues = null;
    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    sensorManager.unregisterListener(this);
}