UNPKG

vue-hmap

Version:

A Vue3 component for Gaode Map with drawing capabilities

230 lines (175 loc) 5.79 kB
# Vue HMap Component 一个基于 Vue3 + TypeScript 的高德地图绘制组件库,提供丰富的地图绘制功能和工具。 ## ✨ 特性 - 🗺️ **高德地图集成** - 基于高德地图 API,支持多种地图图层 - ✏️ **丰富的绘制工具** - 支持标记点、管线、区域等多种绘制类型 - 🎨 **可视化工具面板** - 拖拽式工具面板,直观易用 - 🔍 **位置搜索** - 内置位置搜索功能 - 📱 **响应式设计** - 适配各种屏幕尺寸 - 🎯 **TypeScript 支持** - 完整的类型定义 - 🎛️ **数据预览** - 实时预览绘制数据 - 💾 **数据保存** - 支持多种数据保存格式 - 🎪 **图层切换** - 支持标准地图和卫星图切换 ## 📦 安装 ```bash npm install vue-hmap ``` ## 🚀 快速开始 ### 基础用法 ```vue <template> <HMap :drawType="1" :drawArr="[]" :mapKey="yourAmapKey" @mapDone="onMapDone" @mapSave="onMapSave" @mapEdit="onMapEdit" /> </template> <script setup> import HMap from 'vue-hmap' const onMapDone = (isDone) => { console.log('地图加载完成:', isDone) } const onMapSave = (data) => { console.log('保存的数据:', data) } const onMapEdit = (data) => { console.log('编辑的数据:', data) } </script> ``` ### 完整示例 ```vue <template> <div style="width: 100vw; height: 100vh;"> <HMap :drawType="drawType" :drawArr="drawData" :mapKey="amapKey" :mapSecurityJsCode="securityCode" :isPreview="true" :isOnlyGeo="false" @mapDone="handleMapDone" @mapSave="handleMapSave" @mapEdit="handleMapEdit" @mapClick="handleMapClick" /> </div> </template> <script setup> import { ref } from 'vue' import HMap from 'vue-hmap' const drawType = ref(1) // 绘制类型 const drawData = ref([]) // 初始绘制数据 const amapKey = ref('your-amap-key') // 高德地图 Key const securityCode = ref('your-security-code') // 安全密钥 const handleMapDone = (isDone) => { console.log('地图加载状态:', isDone) } const handleMapSave = (data) => { console.log('保存的绘制数据:', data) // 处理保存的数据 } const handleMapEdit = (data) => { console.log('编辑的绘制数据:', data) // 处理编辑的数据 } const handleMapClick = (event) => { console.log('地图点击事件:', event) } </script> ``` ## 📋 API 文档 ### Props | 属性 | 类型 | 默认值 | 描述 | |------|------|--------|------| | `drawType` | `Number` | `0` | 绘制类型:0=无,1=标记点,2=线段,3=多边形 | | `drawArr` | `Array` | `[]` | 初始绘制数据数组 | | `mapKey` | `String` | `''` | 高德地图 API Key | | `mapSecurityJsCode` | `String` | `''` | 高德地图安全密钥 | | `isPreview` | `Boolean` | `false` | 是否显示数据预览按钮 | | `isOnlyGeo` | `Boolean` | `false` | 是否只保存地理坐标数据 | ### Events | 事件名 | 参数 | 描述 | |--------|------|------| | `mapDone` | `(isDone: boolean)` | 地图加载完成时触发 | | `mapClick` | `(event: object)` | 地图点击时触发 | | `mapSave` | `(data: object)` | 保存绘制数据时触发 | | `mapEdit` | `(data: object)` | 编辑绘制数据时触发 | ### 方法 | 方法名 | 参数 | 描述 | |--------|------|------| | `setData` | `(element: string, data: object)` | 设置元素数据 | ## 🛠️ 绘制工具 ### 管点工具 - **阀门** - 用于标记阀门位置 - **补偿器** - 用于标记补偿器位置 - **检查井** - 用于标记检查井位置 - **管道井** - 用于标记管道井位置 - **分支阀门** - 用于标记分支阀门位置 - **减压阀** - 用于标记减压阀位置 ### 管线工具 - **管线** - 绘制管线路径 - **虚线** - 绘制虚线路径 ### 使用说明 1. **管点工具**:从左侧拖拽工具到地图,单击地图放置标记 2. **管线工具**:从左侧拖拽工具到地图,依次单击创建折线点,双击结束 3. **区域工具**:从左侧拖拽工具到地图,依次单击创建多边形点,双击结束 4. **右键操作**:右键点击绘制元素可进行信息绑定、编辑、删除等操作 ## 🎨 功能特性 ### 地图控制 - **图层切换**:支持标准地图和卫星图切换 - **缩放控制**:支持地图缩放和平移 - **位置搜索**:内置位置搜索功能 ### 数据管理 - **数据预览**:实时预览所有绘制数据 - **数据保存**:支持保存完整绘制信息 - **数据清除**:一键清除所有绘制元素 - **数据编辑**:支持编辑已绘制的元素 ### 工具面板 - **拖拽式工具**:直观的拖拽式工具面板 - **工具分类**:管点工具和管线工具分类管理 - **使用说明**:内置详细的使用说明 ## 🔧 开发环境 ### 依赖要求 - Vue 3.0+ - Element Plus 2.0+ - 高德地图 API ### 本地开发 ```bash # 克隆项目 git clone <repository-url> # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建组件库 npm run build:lib ``` ## 📝 更新日志 ### v0.0.5 - 新增拖拽式工具面板 - 优化绘制工具分类 - 新增数据预览功能 - 改进用户交互体验 ### v0.0.4 - 新增图层切换功能 - 优化绘制性能 - 修复已知问题 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request 来帮助改进项目。 ## 📄 许可证 MIT License ## 🔗 相关链接 - [高德地图开放平台](https://lbs.amap.com/) - [Vue 3 官方文档](https://vuejs.org/) - [Element Plus 文档](https://element-plus.org/) ## 💡 注意事项 1. 使用前请确保已申请高德地图 API Key 2. 组件依赖 Element Plus,请确保项目中已安装 3. 建议在 Vue 3 项目中使用 4. 支持 TypeScript 项目 --- 如有问题或建议,欢迎提交 Issue!