# MapLocation 地图定位组件 一个可复用的地图定位组件,集成了地址输入、位置获取、地图打开等功能。 ## 功能特性 - 📍 自动获取当前位置 - 🗺️ 一键打开系统地图 - 📝 支持手动输入地址 - 📱 跨平台支持(APP、微信小程序、H5) - 🎨 美观的UI设计 - 🔧 高度可配置 ## 使用方法 ### 基础用法 ```vue ``` ### 完整用法 ```vue ``` ## Props 属性 | 属性名 | 类型 | 默认值 | 说明 | |--------|------|--------|------| | label | String | '地址' | 表单标签 | | placeholder | String | '请输入或选择收货地址' | 输入框占位符 | | value | String | '' | 地址值(支持v-model) | | showLocationCard | Boolean | true | 是否显示位置建议卡片 | ## Events 事件 | 事件名 | 参数 | 说明 | |--------|------|------| | input | String | 地址值变化时触发 | | location-success | Object | 位置获取成功时触发 | | location-error | Error | 位置获取失败时触发 | | use-location | Object | 点击使用位置时触发 | | map-opened | - | 地图打开成功时触发 | | address-focus | - | 地址输入框获得焦点时触发 | | address-input | String | 地址输入时触发 | ## 位置对象结构 ```javascript { address: "纬度: 39.123456, 经度: 116.123456", latitude: 39.123456, longitude: 116.123456 } ``` ## 方法 组件提供了以下方法供外部调用: ### setLocation(location) 手动设置位置信息 ```javascript // 在父组件中调用 this.$refs.mapLocation.setLocation({ address: '北京市朝阳区', latitude: 39.123456, longitude: 116.123456 }) ``` ### clearLocation() 清空位置信息 ```javascript // 在父组件中调用 this.$refs.mapLocation.clearLocation() ``` ## 平台支持 - ✅ APP-PLUS:使用系统地图应用 - ✅ MP-WEIXIN:使用微信小程序地图 - ✅ H5:使用高德地图在线版 ## 依赖 - `@/utils/permission.js`:权限处理工具 - uni-app 定位API - uni-app 地图API ## 注意事项 1. 首次使用需要用户授权定位权限 2. 不同平台的权限处理可能略有差异 3. H5环境下需要网络连接才能使用地图功能 4. 建议在真机上测试定位功能