最近项目中遇到了一个问题,切换到2D模式下的时候,球上的点、线、图片、模型等,拖动时偶尔会出现黑影,放个对比图感受一下,下图分别是正常显示和拖动黑影两种情况。
操作了几次发现了问题所在,左右拖动会发现有多个世界,每次出现世界边界的时候就会出现拖影的问题。之后去查了api发现了mapMode2D属性,该属性有两个取值
- Cesium.MapMode2D.INFINITE_SCROLL
The 2D map can be scrolled infinitely in the horizontal direction.(二维地图可以在水平方向上无限滚动)- Cesium.MapMode2D.ROTATE
The 2D map can be rotated about the z axis.(二维地图可以围绕z轴旋转)
其中,Cesium.MapMode2D.INFINITE_SCROLL为默认值,即我们看到的多个世界,可以无限拖动。当mapMode2D的属性值改为Cesium.MapMode2D.ROTATE后,不再出现多个世界,也不会有拖影了。
总结
为防止出现拖影,可以在初始化时设置mapMode2D属性值为Cesium.MapMode2D.ROTATE,虽然我也不明白为什么会这样,但是设置之后问题真的不存在了。
var viewer = new Cesium.Viewer( 'cesiumContainer', {
sceneModePicker : true,
mapMode2D: Cesium.MapMode2D.ROTATE
}