npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lcplugin/cesium-plugin

v1.0.0

Published

``` my-cesium-lib/ ├── index.html ← 新增:开发时的入口HTML ├── src/ │ ├── playground/ ← 新增:示例平台相关代码 │ │ ├── App.vue │ │ └── examples.ts ← 你的所有示例定义 │ ├── main.ts ← 新增:开发时的 Vue 入口 │ ├── core/ ← 原始

Readme

项目结构

my-cesium-lib/
├── index.html               ← 新增:开发时的入口HTML
├── src/
│   ├── playground/          ← 新增:示例平台相关代码
│   │   ├── App.vue
│   │   └── examples.ts      ← 你的所有示例定义
│   ├── main.ts              ← 新增:开发时的 Vue 入口
│   ├── core/                ← 原始封装代码
│   ├── layers/
│   ├── events/
│   ├── utils/
│   ├── index.ts             ← 库的统一导出
│   └── plugin.ts            ← Vite 插件
├── vite.config.ts           ← 需要修改
├── package.json             ← 增加开发依赖
└── tsconfig.json

基于你现有的封装进度,我建议按照以下优先级继续扩展你的库:


🎯 推荐封装路线

第一优先级:三维模型(3D Tiles / glTF)

理由:GIS 应用中仅次于标注的核心功能,用于加载建筑、设备、场地等三维模型。

应包含的功能

  • 加载 3D Tiles / glTF 模型
  • 更新模型位置、缩放、旋转
  • 切换模型的颜色 / 材质(CustomShader 基础)
  • 显隐控制
  • 点击事件(拾取)
  • 飞行定位到模型
  • 删除模型

第二优先级:相机控制增强

理由:你的 MapManager 目前只有简单的 flyTo,实际项目中需要更丰富的视角控制。

应包含的功能

  • 设置视角朝向(方向、俯仰角)
  • 围绕某点旋转
  • 限制缩放范围
  • 保存/恢复视角
  • 自动环绕飞行
  • 截图(保存画布为图片)

第三优先级:粒子特效与动态线

理由:监控大屏、应急指挥中常见的动态效果,让平台更有“科技感”。

应包含的功能

  • 粒子系统(火焰、烟雾、雨雪、飞线)
  • 流动线(管线流向效果)
  • 动态雷达扫描
  • 动态扩散圆
  • 脉冲点

第四优先级:海量数据展示

理由:当需要在单张图上展示数万甚至数十万级别的要素时,需要更高效的方案。

应包含的功能

  • 点聚合(BillboardCollection 已用,但可进一步封装聚合逻辑)
  • 热力图(HeatmapMaterial 或自定义着色器)
  • WMS / WMTS 服务管理
  • GeoJSON / KML 数据加载
  • 聚类显示

第五优先级:测量与绘制工具

理由:大多数 GIS 平台需要用户在图上进行交互式测量和绘制。

应包含的功能

  • 距离测量(贴地 / 直线)
  • 面积测量
  • 绘制临时点、线、面(鼠标交互)
  • 编辑已有要素的顶点
  • 测量结果显示(跟随鼠标的浮动标签)

第六优先级:UI 组件(非 Vue 组件,纯逻辑)

理由:虽然你不想提供 Vue 组件,但可以封装一些纯 JS 的逻辑模块,让使用者在自己的 UI 框架中集成。

应包含的功能

  • 图例管理
  • 图层树(层级控制器)
  • 时间轴控制
  • 状态管理模块(记录地图当前视图、激活的数据集等)

📊 优先级总结表

| 优先级 | 模块 | 开发难度 | 项目价值 | 建议何时封装 | |--------|------|----------|----------|--------------| | ⭐1 | 3D Tiles / glTF 模型管理 | 中等 | 极高 | 现在立刻 | | ⭐2 | 相机控制增强 | 简单 | 很高 | 模型管理之后 | | ⭐3 | 粒子特效与动态线 | 中等 | 高 | 核心功能稳定后 | | ⭐4 | 海量数据展示 | 高 | 很高 | 遇到性能瓶颈时 | | ⭐5 | 测量与绘制工具 | 中等 | 中等 | 需要交互绘制时 | | ⭐6 | UI 逻辑组件 | 简单 | 中等 | API 丰富后 |


基于你现有的库结构,并结合常见三维 GIS 应用需求,我整理了一份可封装的分析与工具功能清单。这些功能都可以作为独立管理器或静态工具集,完全由纯 TypeScript 实现,不依赖任何 UI 框架,且对外暴露简单易用的 API。


🧠 一、空间分析功能

1. 通视分析 (Viewshed / Sightline)

  • 核心内容:判断两点之间是否有遮挡;扇形或球面可视域计算(可生成颜色纹理贴图)。
  • 封装思路:内部使用 Cesium.ScreenSpaceElement 或射线拾取判断遮挡,提供 isPointVisible(observer, target) 方法;可视域分析可使用 Cesium.PostProcessStage 或自定义着色器实现。
  • 使用场景:信号塔覆盖、监控探头范围、城市规划评估。

2. 限高分析 (Height Limit)

  • 封装思路:根据给定的多边形范围和高度限制,对比 3D Tiles 或地形,高亮超标建筑。可通过遍历 3D Tiles 的 Cesium3DTileFeature 或自定义着色器实现。
  • 参数:区域、限高值、颜色标记。

3. 剖面分析 (Profile / Cross Section)

  • 封装思路:绘制一条线,采样下方的地形高度(Cesium.sampleTerrainMostDetailed),返回地形剖面数据(距离-高程数组),并可返回生成的剖面图 Canvas 或 SVG。
  • 参数:路径、采样点数。

4. 坡度分析 (Slope) / 坡向分析

  • 封装思路:基于地形瓦片,计算每个像素的坡度或坡向,生成彩色覆盖图(通过 Cesium.SingleTileImageryProvider 或自定义图元)。
  • 参数:区域、分级颜色。

5. 缓冲区分析 (Buffer)

  • 封装思路:对点、线、面生成几何缓冲区(平面缓冲),考虑地表高度?可分 2D 和贴地两种模式。
  • 实现:利用 turf.js 进行平面几何运算,将结果转为 Cesium 多边形或折线。

6. 日照分析 (Shadow / Sunlight)

  • 封装思路:通过 Cesium.ShadowMap 或计算太阳位置,显示给定时间的阴影区域,或分析某点在一天内的日照时长。
  • 参数:日期时间、区域。

7. 淹没模拟

  • 封装思路:设置一个动态高度平面,用半透明多边形表现水位上涨。
  • 参数:多边形区域、淹没高度、动画速度。

📏 二、测量工具(纯逻辑,无 UI组件)

1. 距离测量

  • 贴地距离Cesium.EllipsoidGeodesic 或采样地形点。
  • 直线距离:直接计算 Cartesian3 之间的距离。
  • 多段线总长:折线累计长度。

2. 面积测量

  • 贴地面积:将多边形顶点投影到椭球面,使用多边形面积公式。
  • 三维面积:基于高度差计算斜面面积。

3. 高度测量

  • 两点间高差:直接相减。
  • 贴地高度:从地表某点向上垂直测量(例如建筑高度)。

4. 角度测量

  • 三点构成的角度:水平夹角、垂直夹角。

🧰 三、坐标与几何工具

1. 坐标批量转换

  • 提供 WGS84 ↔ 墨卡托、笛卡尔坐标系互转,以及弧度/度转换。
  • 输入输出为简单的 [lng, lat, height] 或对象。

2. 几何计算

  • 判断点是否在多边形内(平面/椭球)。
  • 两条线段交点计算。
  • 多边形中心点计算(质心/视觉中心)。

3. 地球数学常量

  • 提供常用地球半径、PI 等常量。

🌐 四、数据与格式工具

1. GeoJSON / KML 加载器

  • 将 GeoJSON 或 KML 数据自动解析为点、线、面 Entity 或 Primitive 集合。
  • 支持样式映射(根据属性设置颜色)。

2. 3D Tiles 样式批处理

  • 根据属性表动态设置 3D Tiles 的颜色、透明度、显示条件。
  • 封装 Cesium.Cesium3DTileStyle 的 JSON 生成,提供链式调用或对象配置。

3. 地形采样工具

  • 输入坐标数组,返回对应地表高度。
  • 内部使用 Cesium.sampleTerrainMostDetailed

🕹️ 五、交互辅助工具

1. 鼠标拾取管理器

  • 统一管理点击、悬停的拾取结果,自动识别对象类型(Entity、Primitive、3D Tiles 特征)。
  • 提供回调:onPick(callback),返回拾取对象的 ID、属性表、屏幕位置等。

2. 拖拽管理器

  • 允许用户拖动某个 Entity(点/模型)并实时更新位置。

3. 图形绘制管理器

  • 提供鼠标交互绘制点、线、面、圆、矩形的能力(不包含 UI 按钮,只暴露 start/stop 方法)。
  • 绘制过程中实时预览,完成后返回几何数据。

4. 标绘管理器

  • 提供常用军事/消防标号的绘制逻辑(如箭头、钳击、集结地等复杂形状)。

🎨 六、特效与可视化工具

1. 扫描雷达效果

  • 扇形扫描面,可配置颜色、旋转速度、半径。

2. 动态流线

  • 沿路径移动的纹理线(PolylineFlowMaterialProperty 或自定义着色器)。

3. 光柱/光墙

  • 垂直向上或向外的发光墙体(可用 Wall 或 Billboard 模拟)。

4. 粒子特效管理器

  • 统一管理火焰、烟雾、爆炸等粒子系统,简化参数。

📊 推荐实现优先级

| 优先级 | 功能 | 理由 | |-------|------|------| | ⭐1 | 拾取管理器 (PickerManager) | 很多分析功能需要交互拾取,基础而重要 | | ⭐1 | 测量工具集 (MeasureUtils) | 距离、面积、高度是常见需求,可静态方法调用 | | ⭐2 | 通视分析 | 典型的空间分析,有代表性 | | ⭐2 | 剖面分析 | 地形分析核心功能 | | ⭐2 | 坐标与几何工具 | 提高开发者效率,减少重复计算 | | ⭐3 | 绘制管理器 (DrawManager) | 提升交互体验,但复杂度稍高 | | ⭐3 | 缓冲区分析 | 常用 GIS 分析,可借助 Turf | | ⭐4 | 日照分析、淹没模拟 | 特定场景需求,可根据项目定制 |