更新记录

1.0.0(2026-07-19)

  • 首发:离线 GeoJSON 地图可视化(M2 原生绑定层 桥接)。
  • 自研核心 30 单测绿、自研 无额外系统依赖;原生绑定层 生成 Kotlin/Swift 绑定、桥接(types.uts 拆分避 overload panic + 顶层工厂避构造重载歧义)。

平台兼容性

uni-app x(5.14)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 5.0 12 × ×

nex-geomap 离线地图可视化

自研离线地图渲染核心:离线渲染 GeoJSON 地图:省市 choropleth 分级填色 + 气泡叠加 + 区域点击命中,投影(Albers 等积 / Web Mercator)+ 坐标系互转(WGS84/GCJ02/BD09)全在原生层,不依赖在线瓦片 / 地图 SDK。提供 uni-app x 可调的对象型 API。

API

对象型 GeoMapnew GeoMap(width, height) 建一次,之后载底图/配置/出图/命中):

方法 说明
new GeoMap(width, height) 建 w×h 地图(像素;默认 Albers 等积投影、空底图)
loadGeojson(json, coordSys) 载 GeoJSON 底图。coordSys: 'wgs84'/'gcj02'/'bd09'(非 WGS84 转到 WGS84)
setOption(json) 声明式配置 {projection, choropleth:{values,ramp,min,max}, bubbles:[{lon,lat,value}]}(均可选)
renderToFile(path) 渲染 PNG 写文件,返回 {width,height,sizeBytes}
renderBase64() 渲染 PNG → base64(小图/H5;大图用 renderToFile)
hitAt(px, py) 屏幕点命中区域 → JSON {"kind":"area","index","name","adcode"}(无命中 null
toScreen(lon, lat) 经纬度 → 屏幕像素 [x, y]
regionCount() 已载入区域数
geomapVersion() 核心版本号(自由函数)

示例

import { GeoMap } from '@/uni_modules/nex-geomap'

const map = new GeoMap(390, 560)
map.loadGeojson(chinaProvinceGeoJson, 'wgs84')
map.setOption('{"projection":"albers","choropleth":{"values":{"110000":80,"120000":40},"min":0,"max":100}}')
const r = map.renderToFile('_doc/map.png')   // {width,height,sizeBytes}
// 手势命中(把 clientX/clientY 相对画布的坐标传进来):
const hit = map.hitAt(px, py)                 // '{"kind":"area","name":"北京市","adcode":"110000"}' | null

平台与验证状态

  • 仅 App 端(Android / iOS);GeoJSON 底图由调用方提供(阿里 DataV / 天地图等开源省市边界)。
  • v1 已达:自研核心 30 单测绿(投影权威不变式 / GeoJSON 解析 / 视口拟合 / choropleth 渲染+气泡 / 命中含内环挖洞 / 坐标转换差分核对 / 对象 API),自研,无额外系统依赖;原生绑定层 绑定生成干净。
  • 后续版本(gated):原生手势视图(pan/zoom + 省→市下钻)、H5、内置省级底图、热力/迁徙线图层、真机 L6。桥接 cli --compile / build / 真机需宿主 HBuilderX(见 docs/roadmap/HANDOFF-2026-07-16-geomap-m2-bridge-host-verify.md)。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据。所有计算/处理均在本地完成,无任何网络请求、不发送数据到任何服务器。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。