@navsea/maplibre-particle-rn
13.4.1-particle.2 提供 React Native 的纯 Field Renderer 接口。它只接收宿主已经准备好的 canonical field 元数据与本地二进制文件,并控制既有 Native/Core 渲染器;不提供地图组件、底图、数据集、provider、HTTP、缓存或业务策略。
Map 与 Camera 必须由 Consumer 直接从 @maplibre/maplibre-react-native@11.3.6 导入。本包将该库声明为 peer dependency,不再转导出 MapLibre React Native。
版本关系
- RN/TS 包:
13.4.1-particle.2 - Android Native artifact:
cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.1
本次仅整理 RN/TS 公共接口。Native artifact 未构建、未修改、未发布;Expo plugin 继续解析上述冻结 artifact。
最小接入
import { Camera, Map } from "@maplibre/maplibre-react-native";
import {
FieldRuntime,
createParticleFieldStyleFragment,
type FieldColorStop,
} from "@navsea/maplibre-particle-rn";
const renderer = createParticleFieldStyleFragment();
const mapStyle = JSON.stringify({
version: 8,
sources: { ...renderer.sources },
layers: [...renderer.layers],
});
宿主在样式加载并取得 reactTag 后调用 FieldRuntime.attach(reactTag)。准备 canonical payload 的方式由宿主决定,再按时间顺序调用:
await FieldRuntime.clearFields(reactTag);
await FieldRuntime.submitField(reactTag, metadataJson, localFileUri);
await FieldRuntime.setFieldColorStops(reactTag, [
{ value: 0, red: 0.08, green: 0.2, blue: 0.8, alpha: 0.72 },
{ value: 30, red: 0.9, green: 0.08, blue: 0.08, alpha: 0.72 },
]);
createParticleFieldStyleFragment() 只返回 renderer source、field layer 与 particle layer;不含底图或业务数据。particleFieldIds 可供宿主引用相同的 source/layer ID。
FieldRuntime
全部方法均以 reactTag 为首参并返回既有桥接命令结果:
- 生命周期:
attach、detach、getState - 数据:
clearFields、submitField - 显示与播放:
setEnabled、setFieldVisible、setParticleVisible、setTargetFps、setTargetTime、setPlaybackState、setPlaybackSpeed - 色彩:
setFieldColorStops、setParticleColor、setTrailColor - 粒子视觉参数:
setParticleCount、setParticleLineWidth、setParticleLength、setParticleOpacity、setTrailOpacity、setTrailFade、setFieldOpacity
FieldColorStop 使用无业务含义的 value 字段;色阶继续遵循既有 Native 契约,至少提供 2 个且 value 严格递增。包在非原生环境可安全导入;实际调用 FieldRuntime 而 Native bridge 不存在时会给出稳定、明确的错误。
安装与发布
正式包仍以 HTTPS tarball 交付:
https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.4.1-particle.2.tgz
Consumer 只依赖发布 tarball,不依赖本仓库源码路径。发布前通过 npm pack 检查 tarball 内容;本包不包含 AAR、APK、fixture 或凭证。