我正在使用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而不是更好。
非常感谢:)
答案 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);
}