关于支持vue3的GoogleMap,暂时推荐两种
vue3-google-map
vue3 google maps
大家有较好的推荐欢迎交流
我这里选用的第二种

npm install -S @fawmi/vue-google-maps

然后再main中引入

// google-map
import VueGoogleMaps from '@fawmi/vue-google-maps'
app.use(VueGoogleMaps, {load: {key: 你的Google map key// language: 'de',}
})

新建一个xxx.vue的模块

 <div id="googleMap" class="mapCont"><GMapMap ref="mapRef" :center="center" :zoom="15"><GMapMarker v-for="(item, index) in markerOptions" :key="index" :position="item.position" /></GMapMap></div>

GMapMap 为地图,GMapMarker为标记,其他需求看文档就好了

const center = reactive({ lat: 51.093048, lng: 6.84212 })
const mapKey = settings.googleMapKey
const markerOptions = reactive([{position: {lat: 51.093048,lng: 6.84212}}
])

设置地图中心和坐标点
在旁边随便加个搜索框,搜索并设为中心,搜索这里是使用的geocode

const reqSearch = () => {axios.get('https://maps.googleapis.com/maps/api/geocode/json?address=' + data.searchVal + '&key=' + mapKey).then((res) => {console.log('res', res)if (res.data.status == 'OK') {center.lat = res.data.results[0].geometry.location.latcenter.lng = res.data.results[0].geometry.location.lngmarkerOptions.splice(0, 1, { position: { lat: center.lat, lng: center.lng } })axios.get(`https://maps.googleapis.com/maps/api/geocode/json?&key=${mapKey}&latlng=${center.lat},${center.lng}`).then((res) => {console.log(res)if (res.data.status == 'OK') {addressParse.lat = res.data.results[0].geometry.location.lataddressParse.lng = res.data.results[0].geometry.location.lnglet sourceData = res.data.results.sort((a, b) => {return b.address_components.length - a.address_components.length})sourceData = sourceData[0].address_componentsaddressParse.address = res.data.results[0].formatted_addresssourceData.forEach((item) => {if (item.types[0] == 'country') {addressParse.nation = item.long_name}if (item.types[0] == 'administrative_area_level_1') {addressParse.Province = item.long_name}if (item.types[0] == 'administrative_area_level_2' || item.types[0] == 'locality') {addressParse.city = item.long_name}if (item.types[0] == 'postal_code') {addressParse.postal_code = item.long_name}})console.log(addressParse)} else {ElMessage.error('地址详情查询失败')}})} else {ElMessage.error('查询失败')}}).catch((err) => {console.log('err', err)ElMessage.error('查询失败')})
}

我这里首先通过地址搜索,得到经纬度,然后通过经纬度取货去更详细的地址信息,英语不好文档看的太折磨了,大家有什么好办法欢迎交流

这是我最终需要的一些值

const addressParse = reactive({nation: '',Province: '',city: '',address: '',postal_code: '',lat: '',lng: ''
})

在父组件使用

 <googleMap ref="searchAddRef" @getLocal="getLocal" style="height: 100%; width: 100%" />
import googleMap from '@c/googleMap/googleMap'

因为这里我用的是setup语法糖,需要来设置emit

const emit = defineEmits(['getLocal'])
emit('getLocal', addressParse)

父组件接收

const getLocal = (addressParse) => {console.log(addressParse)
}

完事(其实踩了好多坑)

vue3 简单封装GoogleMap组件相关推荐

  1. vue2+webpack/vue3+vite 封装svg组件总结笔记

    一.vue2+webpack 1.npm安装依赖包 npm i svg-sprite-loader package.json "svg-sprite-loader": " ...

  2. vue3+TypeScript封装echarts5组件

    https://blog.csdn.net/qq_38330707/article/details/111497853 有用mark 等抽时间写个vue+TS+echarts5.0的组件文章 写个大概 ...

  3. vue3使用echarts并封装echarts组件

    vue3使用echarts并封装echarts组件 前言: 一.安装并导入echart 1.npm下载包 2.配置echarts 二.使用echarts 三.封装echarts为组件 前言: 本文使用 ...

  4. 利用递归组件实现一个简单的树组件(vue3)

    1. 简言 闲来无事不从容,睡觉东窗日已红. 万物静观皆自得,四时佳兴与认同. 最近学习vue3组件的时候实现了一个简单的树组件.话不多说,直接上代码. 2.效果 这个数组件实现了展开.选中和选择三个 ...

  5. vue3中,echarts使用(四)02——柱状图之堆叠条形图-定制化 封装切换tag标签组件 封装title组件

    vue3中,echarts使用(四)02--柱状图之堆叠条形图-定制化 & 封装切换tag标签组件 & 封装title组件 效果 代码 1.主页面 index.vue <temp ...

  6. Vue3VideoPlay+vue3+ts封装一个视频播放组件

    vue3+ts封装一个视频播放组件 基于Vue3VideoPlay 做了常用的配置,复制即用! 官方文档https://codelife.cc/vue3-video-play/ 安装 npm安装: n ...

  7. 封装 vue 组件的过程记录

    在我们使用vue的开发过程中总会遇到这样的场景,封装自己的业务组件. 封装页面组件前要考虑几个问题: 1.该业务组件的使用场景 2.在什么条件下展示一些什么数据,数据类型是什么样的,及长度颜色等 3. ...

  8. Android APP更新下载工具类——简单封装DownloadManager

    几乎所有APP都包含了检查更新功能,更新下载功能的实现方式常用的有两种:1.使用App网络框架的文件下载请求:2.使用自带的DownloadManager类:本文介绍第二种,简单封装一下Downloa ...

  9. 学会用taro封装一个组件

    我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣学习前端知识 前言 大家好 我是歌谣 今天要说得是用taro封装一个组件 核心是学会弹性布局 直接上代码 组件部分 子组件 import ...

最新文章

  1. ren`guang-boss面试
  2. suse linux ssh connerc failed
  3. 你的生产型ML复现不了,可能是工作流程出了问题
  4. Android TV 悬浮球模拟物理按键
  5. leetcode算法题--石子游戏 II★★
  6. Spring4MVC 请求参数映射和Content-type
  7. mysql 插入_Mysql中创建表格及插入数据
  8. Jenkins配置基于角色的项目权限管理--转
  9. vue 分模块打包 脚手架_手动撸一个webpack4脚手架(仿vuecli2)
  10. P1297 [国家集训队]单选错位 期望
  11. oracle关联字段和序列,oracle(9) 序列和约束
  12. php 命令行打印换行符_如何在命令行输出中打印换行符
  13. 学好JAVA保终身_JAVA IO 学习
  14. noip 2010 引水入城(dfs + 贪心)
  15. java多线程编程(一基础概念)
  16. 博客园博客下载工具,可以主动搜索某人的blog,并以MHTML格式保存到本地文件夹脱机浏览。...
  17. 多个pdf怎么合并成一个pdf?如何将几个pdf文件合并成一个pdf?
  18. 服装尺寸 html,国家标准服装尺寸表
  19. 7-5 有理数比较 (10 分)
  20. 用Python实现TXT文件分割

热门文章

  1. 短信平台专业版软件客户端功能详解源码搭建|移讯云短信系统
  2. duffing matlab,duffing方程matlab
  3. yield方法的用法
  4. 【C++】编程实现复数运算
  5. graphql的调用
  6. 2020年最好的机器人学仿真工具软件汇总
  7. 按PEP8风格自动排版Python代码
  8. 2020年自考计算机应用基础和实践是什么,2020年自考计算机应用基础复习重点8
  9. 到底如何保证线程安全,总结得太好了。。
  10. Android从启动到程序运行发生的事情