经纬志
首页 / Cesium / 使用示例

按住左键画多边形

按住鼠标在球面上划一圈,松开就得到一个封闭面。 可以连续画多个,颜色循环取用,顶点少于三个的会被丢弃。

CesiumJS 1.121 · 更新 2026-10-28
源码与运行效果
运行效果

屏幕坐标换成地表点

camera.getPickRay(windowPosition) 得到一条从相机出发的射线, 再用 scene.globe.pick(ray, scene) 求它与地表的交点。 射线可能打向太空,所以返回值要判空。

移动过程中,新点与上一个点的距离小于 12 米就跳过。 这一步同时起到节流作用,避免顶点过密导致几何退化。

为什么关掉旋转

左键按下同时也会触发相机旋转。示例在 LEFT_DOWN 里把 screenSpaceCameraController.enableRotate 设为 false, 松开时再恢复,于是拖拽只画图不转视角。

可调参数

位置改什么效果
COLORS换成另一组色值连续绘制时的颜色序列
12 米阈值改成 50顶点更稀疏,边更棱角
material 的 alpha0.32 改成 0.8面更实,遮住底图
LEFT_UP 判断门槛改成 4 个点更难点出有效多边形

面是贴地绘制的。顶点都来自球面交点,高度为 0, 因此多边形会贴着地表铺开。想画在某个高度平面上, 需要改为与指定高程的平面求交,而不是直接与球面求交。