Cesium快速上手4-Polylines图元使用讲解

本文详细介绍了Cesium库中Polyline的各种类型,如空间直线、恒向线、罗经线等,以及它们在地图上的表示和实际应用,如导航中的路线绘制。同时涵盖了发光、带边框、箭头和虚线等不同样式。

Polyline & Cesium.PolylineCollection

在这里插入图片描述
ArcType 线段的类型
在这里插入图片描述
以下逐步介绍:

  1. 空间直线(无弧度) Cesium.ArcType.NONE
    空间直线很好理解,两点之间没有弧度,与球面是二维还是三维没有关系

  2. 球面线段
    球面距离是球面上两点之间的最短连线的长度,就是经过这两点的大圆在这两点间的一段劣弧的长度。(大圆就是经过球心的平面截球面所得的圆)
    在这里插入图片描述

  3. 恒向线
    首先来看它的特性:

1.在墨卡托投影图上显示为直线
2.与每一子午线相交成同一角度
在这里插入图片描述

我们知道球体(例如地球)表面上两点之间的最短距离是一个大圆。导航的时候,要驶过一个真正的大圆圈,需要不断改变转向的路线。在大多数情况下,对于短距离航行而言,大圆弧路线和恒向线路线之间的长度差异很小。在高纬度或长途航行中,差异可能很大。在那种情况下,导航员通常将大圆航线分成一系列短的恒向线,以便舵手可以转向一次之后,几个小时不用转方向。

1.两点直接连线

const redLine = viewer.entities.add({
   
   
  name: "Red line on terrain",
  polyline: {
   
   
    positions: Cesium.Cartesian3.fromDegreesArray([-75, 35, -125, 35]),
    width: 5,
    material: Cesium.Color.RED,
    clampToGround: true,
  },
});

2.罗经线

const greenRhumbLine = viewer
<think>好的,我现在需要处理用户关于CesiumPolylineCollection的使用方法和示例代码的请求。首先,我得回忆一下自己对这个类的了解。PolylineCollection在Cesium中是用来高效管理多条多段线的,适合需要动态添加或移除大量线条的场景,比如实时数据可视化。接下来,我应该检查用户提供的系统级指令。用户要求使用正确的LaTeX格式,但问题中似乎没有涉及数学公式,所以可能不需要处理这部分。不过要注意回答结构,使用中文,生成相关问题,并在引用处添加标识。用户还提到参考站内引用,但提供的引用[^1]是关于Cesium的发行日志,可能与PolylineCollection无关,但需要确认是否有关联。用户之前的问题可能涉及Cesium的其他功能,比如3D Tiles,但当前问题明确指向PolylineCollection。我需要确保回答准确,提供实际的使用示例和文档链接。需要验证Cesium官方文档中PolylineCollection的现状,因为有时类名可能有变化,比如是否已被弃用,改用其他类如PrimitiveCollection。 查阅Cesium文档后,发现确实PolylineCollection属于旧版的低级API,可能推荐使用Entity或Primitive API代替。但用户可能仍需要旧版示例,所以应同时提供新旧两种方法。例如,使用Entities可以通过PolylineGraphics,而使用Primitive则通过PolylineGeometry。然后,编写示例代码时,确保语法正确,并注明需要引入的模块。对于旧版PolylineCollection,代码可能如下: varpolylines= viewer.scene.primitives.add(new Cesium.PolylineCollection());varpolyline= polylines.add({positions:Cesium.Cartesian3.fromDegreesArray([...]),width:2.0,material:Cesium.Color.RED}); 同时,指出新版推荐的方式,比如使用Entity:var entity= viewer.entities.add({polyline:{positions:...,width:2,material:Cesium.Color.RED}}); 此外,需要提供文档链接,但要注意Cesium官方文档的版本。如果用户使用的是较新版本,应引导至正确的文档部分,并提示可能存在的弃用情况。 最后,生成相关问题时,要考虑用户可能的后续需求,比如性能优化、动态更新线条、材质设置等,以及与其他绘图方法的比较,如Primitive和Entity的区别。确保问题覆盖常见的使用场景和潜在问题。</think>在Cesium中,PolylineCollection是用于批量管理多条多段线的高性能容器类,适用于需要动态添加/删除大量多段线的场景。以下是关键使用方法和示例: ### 基础用法 ```javascript // 创建多段线集合 const polylines = viewer.scene.primitives.add(new Cesium.PolylineCollection()); // 添加多段线 const polyline = polylines.add({ positions: Cesium.Cartesian3.fromDegreesArray([ -75.10, 39.57, // 费城 -77.02, 38.53 // 华盛顿 ]), width: 4.0, material: Cesium.Color.RED.withAlpha(0.7), arcType: Cesium.ArcType.GEODESIC }); ``` ### 核心配置参数 1. `positions`:三维坐标数组,建议使用$Cesium.Cartesian3.fromDegreesArray()$转换经纬度 2. `width`:线宽(像素单位) 3. `material`:支持颜色或材质对象,如$Cesium.Color.BLUE$或$Cesium.Material.fromType()$ 4. `arcType`:线段类型,支持: - $Cesium.ArcType.GEODESIC$(测地线) - $Cesium.ArcType.RHUMB$(恒向线) - $Cesium.ArcType.NONE$(直线) ### 动态更新示例 ```javascript // 更新位置 polyline.positions = newPositions; // 修改外观 polyline.material = Cesium.Color.YELLOW; polyline.width = 6.0; // 移除单条线 polylines.remove(polyline); // 清空集合 polylines.removeAll(); ``` 建议优先使用Entity API实现更简洁的多段线管理[^1]: ```javascript const entity = viewer.entities.add({ polyline: { positions: Cesium.Cartesian3.fromDegreesArray([...]), width: 8, material: new Cesium.PolylineGlowMaterialProperty({ glowPower: 0.2, color: Cesium.Color.BLUE }) } }); ``` 文档参考: - [官方Primitive文档](https://cesium.com/learn/cesiumjs/ref-doc/PolylineCollection.html) - [Entity API最佳实践](https://cesium.com/learn/ion/cesiumjs-workshop/#/10-entity-api)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值