【问题标题】:How to display a polyline collection in Cesium?如何在铯中显示折线集合?
【发布时间】:2017-01-10 22:24:09
【问题描述】:

我一定是做错了什么,因为我在阅读文档后不确定如何在 Cesium 中显示折线集合。我没有在文档here 中明确看到有关显示折线集合的任何方法或教程。沙盒中也没有任何教程,我可以找到更贴切的 this one,它只显示带有

的奇异折线
viewer.entites.add(Polyline)

我已尝试在此沙箱中使用 PolylineCollection 的添加示例代码(以及迭代然后切换的建议),但没有显示任何内容,也没有显示错误:

// Create a polyline collection with two polylines
var polylines = new Cesium.PolylineCollection();
polylines.add({
  positions : Cesium.Cartesian3.fromDegreesArray([
    -75.10, 39.57,
    -77.02, 38.53,
    -80.50, 35.14,
    -80.12, 25.46]),
  width : 2
});

polylines.add({
  positions : Cesium.Cartesian3.fromDegreesArray([
    -73.10, 37.57,
    -75.02, 36.53,
    -78.50, 33.14,
    -78.12, 23.46]),
  width : 4
});
// Toggle the show property of every polyline in the collection
var len = polylines.length;
for (var i = 0; i < len; ++i) {
  var p = polylines.get(i);
  p.show = true;
}

我不确定文档会指向我呈现这些的其他方式。任何帮助表示赞赏。

【问题讨论】:

    标签: javascript cesium


    【解决方案1】:

    您在这里混合了 Cesium API 层。 Cesium 有 2 个不同的公共 API 层,一个“实体”层和一个“原始”层。 Primitive 层用于图形基元:一个完整​​的折线集合实际上是一个单一的图形基元(在内部,一个单一的“绘图调用”),一个广告牌的集合是另一个单一的基元,等等。一个“实体”是为了更高对象或车辆的级别概念,例如,单个卡车实体可能有一个广告牌、一个标签和一条折线,它们都显示了卡车的位置和过去的位置。出于图形性能的原因,一组单独的实体将共享一组广告牌,以及一组折线等。

    通常建议在可能或可行的情况下使用实体层,因为这样可以让您根据现实世界的对象而不是图形基元的集合来思考。但有时,您拥有如此庞大的静态基元集合,因此直接提交该集合会更高效。

    demo you linked 中,代码创建了许多实体,并为每个实体附加了一条折线。但是,在您发布的代码中,您手动创建 PolylineCollection,并尝试显示它。因此,要修复您的代码,请删除此行:

    viewer.entites.add(Polyline)
    

    并添加这一行:

    viewer.scene.primitives.add(polylines);
    

    请注意,polylines 是在您的代码中声明的,但 Polyline 只是一个类。另请注意,我们将 polylineCollection 添加为 scene.primitive,而不是 entity

    根据您的实际用途,在此处废弃您的代码并重新复制您链接到的实体演示代码并改用该表单可能会更好,也可能不会更好。

    【讨论】:

    • 啊,这很有道理!射击,我跳过文档只是想做一件特定的事情;我错过了一些核心概念。谢谢你的澄清。在我对折线的实际应用中,我将有许多折线,其参考位置是实体,但实际上并不与实体对象相关联(因为它们需要在我的数据模型中独立隐藏/显示/表示)。所以我想在这种情况下我可以将它们保留为原语,只要我仍然可以为它们分配端点位置。现在只想“大声”。你的回答消除了我的困惑。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多