使用vue+element+腾讯地图组件实现地图选点功能

效果:

选点

完整代码

<template><div id="app"><el-button @click="openMapPickPop">选点</el-button><div><b>经度:</b><b>{{ currentPicked?.latlng.lat }}</b></div><div><b>纬度:</b><b>{{ currentPicked?.latlng.lng }}</b></div><div><b>城市:</b><b>{{ currentPicked?.cityname }}</b></div><div><b>位置信息:</b><b>{{ currentPicked?.poiaddress }}{{ currentPicked?.poiname }}</b></div></div>
</template><script setup>import { ref, reactive, computed, watch, onMounted } from "vue";import { ElMessageBox } from "element-plus";const mapApiKey = "UU2BZ-B6RKG-QCTQW-IA6XO-5NHSH-Q6BYM";const IFRAME_HTML = `<iframe id="mapPage" width="600" height="400" frameborder="0"src="https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=${mapApiKey}&referer=myapp"></iframe>`;const currentPicked = ref({latlng: {},});function openMapPickPop($event) {if ($event.relatedTarget) return;ElMessageBox({title: "选择地址",message: IFRAME_HTML,customClass: "location-picker-box",dangerouslyUseHTMLString: true,closeOnPressEscape: false,}).then(() => {window.removeEventListener("message", handleMapPickedMessage, false);console.log("选择了地图", currentPicked.value);}).catch(e => {if (e != "cancel") throw e;window.removeEventListener("message", handleMapPickedMessage, false);});window.addEventListener("message", handleMapPickedMessage, false);}function handleMapPickedMessage(event) {/*** 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息*/let loc = event.data;// 防止其他应用也会向该页面post信息,需判断module是否为'locationPicker'if (loc && loc.module != "locationPicker") return;currentPicked.value = loc;// console.log(" currentPicked.value ", currentPicked.value );}
</script><style>html .location-picker-box {width: auto;max-width: none;}
</style>

实现步骤

步骤一:拿到腾讯地图组件的iframe

去腾讯地图申请账号,拿到自己的key,否则无法调用腾讯地图的组件
腾讯地图组件示例地址

拿到这个iframe

注意:key需要注册账号·自己去申请,拿到唯一的key之后腾讯才知道是谁调用的这个组件,然后计次

  const mapApiKey = "UU2BZ-B6RKG-QCTQW-IA6XO-5NHSH-Q6BYM";const IFRAME_HTML = `<iframe id="mapPage" width="600" height="400" frameborder="0"src="https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=${mapApiKey}&referer=myapp"></iframe>`;

步骤二:在用户点击时调用方法,该方法内调出腾讯的iframe

用别的方法也行,此处是使用了el-element的this.$msgBox,如果使用的其他组件库你也可以使用其他的

  function openMapPickPop($event) {if ($event.relatedTarget) return;ElMessageBox({title: "选择地址",message: IFRAME_HTML,customClass: "location-picker-box",dangerouslyUseHTMLString: true,closeOnPressEscape: false,}).then(() => {window.removeEventListener("message", handleMapPickedMessage, false);console.log("选择了地图", currentPicked.value);}).catch(e => {if (e != "cancel") throw e;window.removeEventListener("message", handleMapPickedMessage, false);});window.addEventListener("message", handleMapPickedMessage, false);}

步骤三:用户选点后,通过页面通信将选中的值传给页面内的变量

  function handleMapPickedMessage(event) {/*** 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息*/let loc = event.data;// 防止其他应用也会向该页面post信息,需判断module是否为'locationPicker'if (loc && loc.module != "locationPicker") return;currentPicked.value = loc;// console.log(" currentPicked.value ", currentPicked.value );}

完成拉!!!!

技术点:使用vue和element实现地图选点功能相关推荐

  1. 微信小程序获取个人头像和昵称,和地图选点功能

    微信小程序获取个人头像和昵称,有技巧 1.可以直接获取 2.通过用户点击获取 过程中,有什么问题,可以加我微信号yizheng369探讨 先分析 这里面隐含了很多默认的规则,大家要注意: 1.可以直接 ...

  2. vue使用谷歌地图绘制图形以及地图选点功能

    因做加拿大配送项目得用到谷歌地图 效果图: 第一步: 首先访问谷歌地图以及文档需要加速插件 你得在谷歌浏览器扩展程序里添加一个加速插件(如图): 最好充值vip,不然免费的加速通道不稳定 本人是在vu ...

  3. uni-app中使用腾讯位置服务实现小程序地图选点功能

    文章目录 1. 官方文档 2. 小程序添加插件 3. HBuilder配置 4. 配置代码 5. 页面代码 1. 官方文档 技术选定(地图选点插件) (对应官网:https://lbs.qq.com/ ...

  4. 微信小程序获取当前位置及地图选点功能

    标题小程序获取当前位置----逆地址解析----地图选点 实现功能:小程序首页定位当前城市类似于 某宝: 某团: 获取当前位置: 在小程序首页创建getLocation函数并在onLoad调用 首先需 ...

  5. ArcGIS API+Canvas +Vue框架 制作前端地图打印功能

    将ArcGIS Pro 桌面打印制图功能搬到前端页面上 实现BS端打印制图功能 简介 地图框 冲突 拖拽 放大缩小 标题 图例 图例储存 图例获取 图例摆放 比例尺 scale属性 格式化 指北针 预 ...

  6. uniapp地图选点功能

    <template><view><view class="" style="height: 500rpx;"></vi ...

  7. vue项目使用高德地图

    vue项目使用高德地图-部分功能介绍 在此做个笔记,引入方式使用了高德2.0 loadsh的加载方式 1.引入高德地图方式-NPM npm i @amap/amap-jsapi-loader --sa ...

  8. Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记

    前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...

  9. 在Vue中使用高德地图

    在Vue中使用高德地图 一.如何在Vue中引入基础高德地图 1.步骤一:注册并登录高德地图开放平台,申请密钥 2.步骤二:安装高德地图加载器 3.封装一个自定义地图组件,并初始化地图 二.根据关键词搜 ...

  10. vue集合离线百度地图

    vue集合离线百度地图 vue.js百度地图api离线 发布于 1月9日 一.需求场景 所谓离线,大概都是项目在内网中使用,无法连接外网,所以需要开发离线地图功能. 在看以下步骤前,先提示这个vue项 ...

最新文章

  1. [JavaWeb基础] 007.Struts2的配置和简单使用
  2. 定义指令时“控制器”,“链接”和“编译”函数之间的区别
  3. 自动装配——@Resource(JSR250)和@Inject(JSR330)---[java规范的注解]
  4. 产品需求文档中容易被忽视的10个细节
  5. CSS背景属性彻底研究
  6. 微星z370黑苹果_记录一下装了第二台黑苹果(Z370 + High Sierra)
  7. imac android studio,Mac安装Android Studio的时候忘记安装Avd Manager怎么办?
  8. 9203班级纪律 1202
  9. “吸才”的字节跳动和“散才”的好未来
  10. C#/winform 腾讯QQ注册
  11. IOCP实现聊天服务
  12. Windows开机运行程序
  13. 钢绞线的弹性模量的计算方法_钢绞线弹性模量的理论计算及其影响因素分析
  14. xlsxwriter去掉网格线_python之xlsxwriter模块(可操作xls/xlsx格式文件)
  15. CKEditor富文本编辑器使用
  16. 苹果在中国失掉 iPad 商标
  17. 大数据在人力资源管理当中的应用
  18. mp3格式怎么转html格式转换器,flac转mp3格式转换器 如何将flac格式的音频文件转换为MP3格式...
  19. Excel PivotTable 使用心得手顺分享(二)
  20. 【文件格式探究】EP.1 对ePub文件格式的初探

热门文章

  1. 数据库周刊45丨易鲸捷4.2亿订单创记录;10月Oracle补丁发布;巨杉SequoiaDB v5.0发布;MySQL卡死案例……
  2. jndi weblogic mysql_WebLogic使用总结(三)——WebLogic配置JNDI数据源
  3. Java创建数组的方法
  4. VL1_四选一多路器(完整RTL、Testbench和覆盖率)
  5. iOS常用三方库、插件、知名技术博客、常用开发工具使用介绍等等,大家可以一次性下载了!
  6. 黄永成think php rest,Rest控制器
  7. kjb文件 解析_十四期全国BIM一级考试真题及解析
  8. 毕业论文查重不合格会怎么样?
  9. 计算机导论学后感5000字,大学计算机导论论文3000字.docx
  10. Excel连接MySQL数据库进行数据的可视化