Files
MapLibreParticleLab/packages/maplibre-particle-rn

@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 或凭证。