首页 / Cesium / 使用示例
按住左键画多边形
按住鼠标在球面上划一圈,松开就得到一个封闭面。 可以连续画多个,颜色循环取用,顶点少于三个的会被丢弃。
源码与运行效果
屏幕坐标换成地表点
camera.getPickRay(windowPosition) 得到一条从相机出发的射线,
再用 scene.globe.pick(ray, scene) 求它与地表的交点。
射线可能打向太空,所以返回值要判空。
移动过程中,新点与上一个点的距离小于 12 米就跳过。 这一步同时起到节流作用,避免顶点过密导致几何退化。
为什么关掉旋转
左键按下同时也会触发相机旋转。示例在 LEFT_DOWN 里把
screenSpaceCameraController.enableRotate 设为 false,
松开时再恢复,于是拖拽只画图不转视角。
可调参数
| 位置 | 改什么 | 效果 |
|---|---|---|
COLORS | 换成另一组色值 | 连续绘制时的颜色序列 |
| 12 米阈值 | 改成 50 | 顶点更稀疏,边更棱角 |
material 的 alpha | 0.32 改成 0.8 | 面更实,遮住底图 |
LEFT_UP 判断 | 门槛改成 4 个点 | 更难点出有效多边形 |
面是贴地绘制的。顶点都来自球面交点,高度为 0, 因此多边形会贴着地表铺开。想画在某个高度平面上, 需要改为与指定高程的平面求交,而不是直接与球面求交。