首页 / 浏览问题 / 三维GIS / 问题详情
快速移动停止后捕获不到实体
14EXP 2023年10月10日
使用产品: 超图cesium 操作系统:win10 x64 使用类型:不清楚 问题详细描述:使用Cesium.ScreenSpaceEventType.MOUSE_MOVE监听鼠标移动,当快速移动并立即停止操作捕获不到鼠标经过的实体 问题重现步骤:快速移动鼠标,快速停止鼠标,鼠标下的正方形实体未捕获到 let pickedObject = null let regionPrimitive = null handler.setInputAction((movement) => { const pickedObject = viewer.scene.pick(movement.endPosition); if (Cesium.defined(pickedObject)) { if (pickedObject.id === regionObjectId) { return } if (regionObjectId && regionPrimitive) { // todo... } regionObjectId = pickedObject.id; regionPrimitive = pickedObject.primitive; if (regionObjectId && regionPrimitive) { const attributes = regionPrimitive.getGeometryInstanceAttributes( regionObjectId ); if (attributes) { // todo... } } } else if (regionObjectId && regionPrimitive) { const attributes = regionPrimitive.getGeometryInstanceAttributes( regionObjectId ); if (attributes) { // todo... } regionObjectId = null regionPrimitive = null } }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)

1个回答

您好,

鼠标移动速度过快确实会出现这个问题

这是判定的运算速度没有跟上MOUSE_MOVE的检测速度

这个在很多地方都是存在的,暂时无法避免

您可以单独设置一个鼠标停止移动的监控进行检测
4,151EXP 2023年10月10日
单独设置一个鼠标停止移动的监控. 这个如何实现

该方法无现成接口实现

可以参考博客https://www.codenong.com/17646825/

谢谢!在实现过程中又出现一个问题。当我使用GroundPrimitive这种方式绘制面时,倾斜或放大看会出现位置偏移现象如下图所示。

绘制的面高度如何?

是贴地还是贴对象的?

三维视角的话这种视角问题通常是很正常的。

地面图元表示在 Scene 中的地形或3D Tiles上叠加的几何图形。

基本体将几何实例与描述完整阴影的 Appearance 组合在一起,包括 材料 和 RenderState 。大致而言,几何实例定义了结构和位置,外观定义了视觉特征。去耦几何形状和外观使我们能够混合并匹配其中的大多数,并彼此独立地添加新的几何形状或外观。

要使用具有不同PerInstanceColors的GeometryInstances,需要支持WEBGL_depth_texture扩展或除PerInstanceColorAppearance之外的其他材料。

带纹理的GroundPrimitives是专为概念性图案设计的,并不用于精确映射地形纹理-对于该用例,请使用 SingleTileImageryProvider 

为了正确渲染,此功能需要EXT_frag_depth WebGL扩展。对于不支持此扩展的硬件,将在某些视角呈现渲染伪像。

我看文档的解释是这样的。应该是贴地的

...