航向模式 旋转地图
Heading mode Rotating Map
我正在为 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()。
遗憾的是,地图不随移动 phone 方向旋转。
N.B。 : 用户锥是可见的,使用 SKHeadingMode.ROUTE 时不是这样。所以看来我的代码并不完全是废话......我也试过ROTATING_HEADING但不是更好。
非常感谢:)
此功能仅在行人导航中可用。
此功能仅在使用步行导航模式时有效(使用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
好的,我终于找到了解决问题的方法...
这不是行人模式的问题。为了使 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);
}
我正在为 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()。
遗憾的是,地图不随移动 phone 方向旋转。
N.B。 : 用户锥是可见的,使用 SKHeadingMode.ROUTE 时不是这样。所以看来我的代码并不完全是废话......我也试过ROTATING_HEADING但不是更好。
非常感谢:)
此功能仅在行人导航中可用。
此功能仅在使用步行导航模式时有效(使用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
好的,我终于找到了解决问题的方法...
这不是行人模式的问题。为了使 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);
}