Navara 是 3D 地球地图引擎:可复用的 GIS 逻辑位于 Rust/WASM 核心,绘制交给可替换的 CG 渲染库。@navaramap/three 是基于 Three.js 的绑定(目前唯一,未来计划支持更多渲染引擎)。公开 API 为 ThreeView 加声明式 Source/Layer/Descriptor 模型。
用途与包:@navaramap/three 提供 ThreeView(默认导出)、Color、大地测量数学工具、MeshDesc/EffectDesc/LightDesc 基类、句柄类型与内置署名 UI;@navaramap/three-default-plugin 提供 DefaultPlugin 与 DefaultDescriptions(注册约 40 个内置描述符);@navaramap/three-default-descs 提供单个描述符类/类型;@navaramap/three-plugins 提供 PersonViewPlugin、OverlayPlugin、CesiumIonPlugin、TileJsonPlugin;@navaramap/three-api 提供独立 GIS 数学。多数应用只需前两个。需显式安装代码导入的每个包,并安装 peer 依赖 three、postprocessing。
用法:固定初始化顺序为构造 ThreeView、在 init 前 addPlugin(否则抛错)、await view.init()、可选 addDefaultPhotorealScene(),之后再加 source/layer/effect。使用 DefaultPlugin 时应写成 new ThreeView<DefaultDescriptions>。能力分四层:声明式 API、命令式 API(FeatureEvaluator、拾取、地形采样、大地测量/ECEF 数学)、插件、自定义描述符。
限制与陷阱:init 后 addPlugin 会抛错;update 为部分合并;矢量材质默认只消费原生几何,需用 geometryTypes 显式开启;source 有引用计数;内联 GeoJSON 无法通过 source.update() 重载,需删除后重建;非贴地折线受光照影响,无灯光时呈黑色;折线宽度受 maxWidth 限制,全球视角下贴地折线会消失;WASM 数学函数在 init 前调用会抛错;elevationHeatmap 省略 logBoundary 会破坏软件 GL 后端;aerialPerspective.irradiance 需配合 view.lit = false;G-buffer 法线为八面体编码,须用 unpackVec2ToNormal 解码。更多细节见各 references 文档。