更新记录
1.0.0(2025-04-30)
x1cms-tianditu - 天地图打点绘制组件
版本:1.0.0(2025-04-30)
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
app-vue |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
× |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
x1cms-tianditu - 天地图打点绘制组件
1.0.0(2025-04-30)
组件介绍
x1cms-tianditu
是一款基于 Leaflet + Turf.js
开发,适用于 UniApp 的天地图打点绘制组件。
支持自定义打点、多边形闭合、面积计算、中心点生成、已有地块展示等功能,广泛适用于地块标注、农田管理、城市规划、测绘标注等业务场景。
组件兼容 App端(Android/iOS)、H5端,小程序端通过 web-view
方式加载。
适配情况
平台 |
支持情况 |
备注 |
App端 |
✅ 完全支持 |
使用离线或在线地图 |
H5端 |
✅ 完全支持 |
支持浏览器直接绘制 |
微信小程序端 |
✅ 通过 web-view 支持 |
内部使用 H5 页面嵌套 |
注意事项
安装方式
本组件遵循 easycom
规范,使用 HBuilderX 3.1.0 及以上版本,直接拖入项目即可,无需手动 import 或注册。
基本用法
<template>
<view class="content">
<x1cms-tianditu @save="handleSave"></x1cms-tianditu>
</view>
</template>
<script setup>
function handleSave(data) {
console.log('保存的地块信息:', data);
}
</script>
组件属性(Props)
属性名 |
类型 |
默认值 |
说明 |
latitude |
Number |
0 |
初始纬度,优先使用定位 |
longitude |
Number |
0 |
初始经度,优先使用定位 |
scale |
Number |
16 |
初始缩放级别 |
multiLandData |
Array |
[] |
绘制已有地块数据,支持多块 |
enableSatellite |
Boolean |
true |
是否启用卫星影像底图 |
组件事件(Events)
事件名 |
参数 |
说明 |
@save |
{ centerPoint, area, geojson } |
保存绘制完成的数据 |
@popupShow |
{ landInfo } |
点击已有地块 Marker 显示信息弹窗 |
组件方法(Methods)
方法名 |
说明 |
initLocation() |
获取用户当前位置,并定位地图中心 |
addPoint() |
在地图中心打一个点 |
undoPoint() |
撤销最近一次打点 |
closePolygon() |
闭合绘制的点形成多边形 |
clearCurrentPolygon() |
清除当前绘制内容 |
savePolygon() |
计算面积并回传保存数据 |
displayMultiLand() |
显示已有地块信息 |
高级用法示例
1️⃣ 监听保存地块数据
<x1cms-tianditu @save="handleSave"></x1cms-tianditu>
<script setup>
function handleSave({ centerPoint, area, geojson }) {
console.log('中心点:', centerPoint);
console.log('面积(亩):', area);
console.log('GeoJSON数据:', geojson);
}
</script>
2️⃣ 显示已有地块数据(多块)
<x1cms-tianditu :multiLandData="lands"></x1cms-tianditu>
<script setup>
const lands = [
{
positions: [
{ lat: 30.0, lng: 120.0 },
{ lat: 30.1, lng: 120.1 },
{ lat: 30.2, lng: 120.2 }
],
center: [30.05, 120.05],
name: '地块A',
iconUrl: '/static/marker.png',
landInfo: {
id: 1,
name: '测试地块'
}
}
];
</script>
3️⃣ 微信小程序使用说明
组件特点总结
- ✅ Leaflet底图,天地图服务
- ✅ 支持中心点打点、撤销打点、闭合绘制
- ✅ 自动计算多边形面积(亩)
- ✅ 生成标准GeoJSON坐标数据
- ✅ 支持绘制已有多个地块,点击展示详细信息
- ✅ 全平台适配(H5、App、小程序通过WebView)
- ✅ 使用 Easycom 自动导入
版本更新
v1.0.0(初始发布)
- ✏️ 支持地图中心打点
- ✏️ 支持闭合绘制多边形
- 📐 支持面积计算(亩)
- 📍 支持保存中心点、面积、geojson数据
- 📦 支持展示多地块功能(带Marker和Tooltip)
未来计划
📌 支持地块编辑功能(增删改)
📌 增加地图切换功能(矢量/影像)
📌 支持手动上传GeoJSON文件绘制
📌 适配百度地图、高德地图等其他底图服务
贡献指南
如果你对 x1cms-tianditu
有更多想法或发现了问题,欢迎提交 Issue 或 Pull Request!🌟