【问题标题】:adding `name` and `description` box for `Cesium PolylineCollection`为“Cesium PolylineCollection”添加“名称”和“描述”框
【发布时间】:2018-12-27 10:41:01
【问题描述】:

在cesium sandcastle 页面@https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/?src=Polyline.html&label=Geometries

您可以看到,当我单击紫色线时,我得到一个框(图像的右上角),指示 name 的 Cesium [Polyline][2] 为 "Purple straight arrow at height"。如何为 [PolylineCollection][2] 添加相同的 name box(下面代码中的第 5 行)?

这里是代码

var viewer = new Cesium.Viewer('cesiumContainer');



var lineCollection = new Cesium.PolylineCollection(); // line no 5
lineCollection.add({
        name : "Hi",
        description : "Hi description",
        positions : Cesium.Cartesian3.fromDegreesArrayHeights([-75, 53, 500000,
                                                               -125, 53, 500000]),
        width : 10,
        followSurface : false
    });
viewer.scene.primitives.add(lineCollection);



var purpleArrow = viewer.entities.add({
    name : 'Purple straight arrow at height',
    polyline : {
        positions : Cesium.Cartesian3.fromDegreesArrayHeights([-75, 43, 500000,
                                                               -125, 43, 500000]),
        width : 10,
        followSurface : false,
        material : new Cesium.PolylineArrowMaterialProperty(Cesium.Color.PURPLE)
    }
});


viewer.zoomTo(viewer.entities);

【问题讨论】:

标签: javascript opengl opengl-3 cesium


【解决方案1】:

名称和描述是 Cesium 中更高级别的“实体”API 的一部分。在图形基元级别,PolylineCollection 所在的位置,没有这样的东西。

您是否需要使用较低级别的 API?通常,想要绿色选择指示器、信息框、名称和描述等高级功能的用户应该坚持使用实体,而不是原语。

也就是说,有一种方法可以检测鼠标何时“选择”原语,并查找一些名称和信息,并命令信息框手动更新。所有这些逻辑都内置在实体层中,因此在您自己的应用程序中重新实现之前,您应该三思而后行。

【讨论】:

  • 谢谢。是的,实体具有特征,但没有原型。我的代码在某种程度上取决于现有代码,我不能选择实体。如您所解释的,在 Primitives 中实现相同的方法是什么。
猜你喜欢
  • 1970-01-01
  • 2017-11-29
  • 2022-11-16
  • 2021-07-11
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
相关资源
最近更新 更多