调用setPadding方法后如何调整HERE SDK的基础相机视角(主点)?
HERE SDK 3.18.3 ROADVIEW模式下导航相机偏移适配方案
问题原因
Map.setPadding() 仅作用于普通地图交互的视口中心点计算,MapUpdateMode.ROADVIEW模式下的导航相机主点为独立配置,不会自动继承地图的padding值,因此会出现道路终点仍居中显示的错位问题。
解决方法
调用NavigationManager的setCameraPrincipalPointOffset()方法手动设置导航相机的主点偏移即可,参数为x、y方向的像素偏移值:
- x方向偏移为正代表主点向右偏移,为负代表向左偏移
- y方向偏移为正代表主点向下偏移,为负代表向上偏移
如果你的左侧UI宽度为leftUiWidth,只需将x偏移设置为左侧UI宽度的1/2(单位:像素),即可和setPadding后的地图中心点对齐,y偏移无上下调整需求时设为0即可。
代码示例
// 示例:先将左侧UI的dp宽度转为像素值 int leftUiWidthPx = getResources().getDimensionPixelSize(R.dimen.left_ui_width); // 计算x偏移,y无偏移需求设为0 int offsetXPx = leftUiWidthPx / 2; int offsetYPx = 0; // 应用偏移配置到导航管理器 navigationManager.setCameraPrincipalPointOffset(offsetXPx, offsetYPx);
注意事项
- 当屏幕旋转、左侧UI宽度动态调整时,需要重新计算偏移值并重新调用方法更新配置
- 如需恢复默认居中视角,传入
(0, 0)调用方法即可
状态参考
- 当前状态:

- 预期状态:

内容的提问来源于stack exchange,提问作者Jakub Sosna
相关产品推荐
相关产品推荐

