百度地图添加坐标点,并返回坐标信息

         1、创建地图容器

       在mounted中初始化地图、鼠标绘制工具和添加鼠标监听事件

        vue data中添加地图和绘制工具对象

        2、添加初始化化地图方法

 initMap(longitude, latitude) {let that = thisthat.map = new BMapGL.Map("container");// 创建地图实例if (longitude == null || latitude == null) {var point = new BMapGL.Point(111.1480354849708, 37.5262978563336);that.map.centerAndZoom(point, 16);      // 初始化地图,设置中心点坐标和地图级别that.map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放this.drawInit()return}},

        new BMapGL.Map("container"); 中存放div容器的id名

 var point = new BMapGL.Point(111.1480354849708, 37.5262978563336);that.map.centerAndZoom(point, 16);      // 初始化地图,设置中心点坐标和地图级别that.map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放

         放入点坐标,centerAndZoom(point, 16)中16为地图等级,越大地图越精细,最大为18

        3、初始化鼠标绘制工具

 // 实例化鼠标绘制工具drawInit() {this.drawingManager = new BMapGLLib.DrawingManager(this.map, {// isOpen: true,        // 是否开启绘制模式enableCalculate: false, // 绘制是否进行测距测面enableSorption: true,   // 是否开启边界吸附功能sorptiondistance: 20,   // 边界吸附距离labelOptions: this.labelOptions,      // label样式});},

        this.drawingManager = new BMapGLLib.DrawingManager(this.map, {}),this.map就是你自己初始化的地图名

        4、添加鼠标监听事件

//鼠标监听事件getEventListener() {// 添加鼠标绘制监听事件this.drawingManager.addEventListener('overlaycomplete', (e, instance) => {var marker = e.overlay;this.inputForm.latitude = marker.getPosition().latthis.inputForm.longitude = marker.getPosition().lngconsole.log(this.inputForm)//关闭绘制this.downDraw();// 计算标记数量this.markerCount = 1;});},

                    var marker = e.overlay;  //获取到merker类型的对象
                    this.inputForm.latitude = marker.getPosition().lat //获取对象内的参数
                    this.inputForm.longitude = marker.getPosition().lng 

        5、调用绘制方法,开始绘制

 //开始绘制draw(e) {if (this.markerCount != 0) {this.$message('标记点只能唯一');return}// 进行绘制this.drawingManager.setDrawingMode(e);this.drawingManager.open();},

        6、绘制后调用的结束方法

 //关闭绘制downDraw() {this.drawingManager.close();}

         我这里有点业务,点坐标只能添加一次,所以在添加坐标的监听方法里添加了坐标数量的上限。

以下是完整代码

<style type="text/css">#container {height: 800px;width: 100%;}
</style>
<script type="text/javascript"src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=1V4mSproiau7AxsArSNKBWqR0ZiyMKNh&s=1"
></script>
<link href="//mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.css" rel="stylesheet">
<script type="text/javascript"src="//mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.js"></script>
<body>
<div id="app" v-cloak><div><el-button id="marker" @click="draw('marker')">点</el-button><el-button @click="">点完了</el-button></div><div id="container"></div>
</div>
</body>
<script>var tableContainer = new Vue({el: '#app',mixins: [sharpMixin],data() {return {inputForm: {id: '',latitude: '',longitude: ''},drawingManager: null,map: null,labelOptions: {borderRadius: '2px',background: '#FFFBCC',border: '1px solid #E1E1E1',color: '#703A04',fontSize: '12px',letterSpacing: '0',padding: '5px'},markerCount: 0}},mounted() {this.initMap();this.getEventListener()},created() {},methods: {// 获取数据列表refreshList() {this.get('${ctx}/basicinfo/operateBuilding/getBuildProjectInfoById').then((res) => {this.inputForm.latitude = res.data.latitudethis.inputForm.longitude = res.data.longitudethis.initMap(this.inputForm.longitude, this.inputForm.latitude)})},initMap(longitude, latitude) {let that = thisthat.map = new BMapGL.Map("container");// 创建地图实例if (longitude == null || latitude == null) {var point = new BMapGL.Point(111.1480354849708, 37.5262978563336);that.map.centerAndZoom(point, 16);      // 初始化地图,设置中心点坐标和地图级别that.map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放this.drawInit()return}},// 实例化鼠标绘制工具drawInit() {this.drawingManager = new BMapGLLib.DrawingManager(this.map, {// isOpen: true,        // 是否开启绘制模式enableCalculate: false, // 绘制是否进行测距测面enableSorption: true,   // 是否开启边界吸附功能sorptiondistance: 20,   // 边界吸附距离labelOptions: this.labelOptions,      // label样式});},//鼠标监听事件getEventListener() {// 添加鼠标绘制监听事件this.drawingManager.addEventListener('overlaycomplete', (e, instance) => {var marker = e.overlay;this.inputForm.latitude = marker.getPosition().latthis.inputForm.longitude = marker.getPosition().lng//关闭绘制this.downDraw();// 计算标记数量this.markerCount = 1;});},//开始绘制draw(e) {if (this.markerCount != 0) {this.$message('标记点只能唯一');return}// 进行绘制this.drawingManager.setDrawingMode(e);this.drawingManager.open();},//关闭绘制downDraw() {this.drawingManager.close();}}})
</script>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/285674.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用SQL和Python处理Excel文件数据

目录 一、引言 二、使用SQL查询Excel文件数据 1、导入必要的库 2、创建数据库连接 3、读取Excel文件数据 4、将数据写入数据库 5、使用SQL查询数据 三、使用Python读取和处理Excel文件数据 1、导入必要的库 2、读取Excel文件数据 3、数据处理和分析 4. 将数据可视化…

【C盘清理】Jetbrains全家桶(PyCharm、Clion……)更改 IDE 特定文件(配置、缓存、插件、日志等)存储位置

文章目录 一、官网说明二、更改 IDE 目录的位置1. 转到“帮助”|“编辑自定义属性”2. 各文件位置3. 以PyCharm系统目录为例4. 修改idea.properties 三、清理旧的 IDE 目录 一、官网说明 IDE 使用的目录官网说明 二、更改 IDE 目录的位置 默认情况下&#xff0c;PyCharm 将每…

【DOM笔记一】什么是DOM?获取元素的方法有哪些?什么是事件以及事件的三要素包括哪些?

文章目录 1 引入1.1 JS组成1.2 API 和 Web API1.3 DOM1.4 DOM树 2 获取元素2.1 通过ID获取2.2 通过标签名获取2.3 通过类名的方法获取2.4 获取特殊元素 3 事件基础 1 引入 1.1 JS组成 JS基础 阶段&#xff1a;ECMAScript 只是标准规定的基本语法&#xff0c;做不了常用的网页…

GaussDB数据库表创建行访问控制策略

目录 一、前言 二、GaussDB中的行访问控制 1、CREATE ROW LEVEL SECURITY POLICY语法 2、ALTER ROW LEVEL SECURITY POLICY语法 3、ROW LEVEL SECURITY策略与适配SQL语法关系 三、GaussDB中的行访问控制策略示例 1、实现GaussDB行访问控制的一般步骤 2、行访问控制策略…

利用canvas封装录像时间轴拖动(uniapp),封装上传uniapp插件市场

gitee项目地址,项目是一个空项目,其中包含了封装的插件,自己阅读,由于利用了canvas所以在使用中暂不支持.nvue,待优化; 项目也是借鉴了github上的一个项目,timeline-canvas,​​​​​​​ ​​​​​​​

【赠书活动】OpenCV4工业缺陷检测的六种方法

文章目录 前言机器视觉缺陷检测工业上常见缺陷检测方法延伸阅读推荐语 赠书活动 前言 随着工业制造的发展&#xff0c;对产品质量的要求越来越高。工业缺陷检测是确保产品质量的重要环节&#xff0c;而计算机视觉技术的应用能够有效提升工业缺陷检测的效率和精度。 OpenCV是一…

openwrt docker nginx 站点搭建

应为家里一直是 openwrt 软路由&#xff0c;这样以来也不用 重新买服务器了&#xff0c;就直接在 openwrt 上面跑个 nginx就行了。把自己的一些东西就可以放上面了。资源再利用哈哈&#xff1b; 先 ssh 连接上 openwrt &#xff1a;我这里的 openwrt 最近刚更新的固件&#xff…

网络安全之Linux环境配置及Linux基础知识讲解<三>

目录 一.下载安装Vmware二.下载安装Kali三.Linux目录结构四.Linux文件属性五.文件目录管理六.vim编辑器 一.下载安装Vmware Vmware官网&#xff1a;https://www.vmware.com 二.下载安装Kali Kali包含数百种工具&#xff0c;可用于各种信息安全任务&#xff0c;例如渗透测试、…

零售EDI:如何与EDEKA 建立EDI连接?

艾德卡EDEKA 是德国最大的食品零售商&#xff0c;因其采用“指纹付款”的方式进行结算&#xff0c;成为德国超市付款方式改革的先驱。 与EDEKA建立EDI连接&#xff0c;首先需要填写EDEKA提供的调查问卷&#xff0c;其中包括公司信息、EDI负责人信息、EDI供应商信息、销售部门信…

1.3 什么是接口?什么是接口测试?

上一小节我们认识了C/S和B/S架构,那在B/S架构中,我们测试最常接触的,就是接口。本课程的重点是接口自动化测试,那同学们真的了解什么是接口吗?首先,我们从通俗的角度来看什么是接口。在计算机中,接口是计算机系统中两个独立的部件进行信息交换的共享边界。这种交换可以发…

springboot学习笔记(一)

本期内容&#xff1a; 1.springboot安装 2.springboot Hello world 1.springboot安装&#xff1a; 参考&#xff1a; springboot安装 Spring boot简介及安装 a. eclipse中打开help-->Eclipse Marketplace b. 在search栏目下&#xff0c;输入&#xff1a;spring-tool-…

Shell编程基础 – C语言风格的Bash for循环

Shell编程基础 – C语言风格的Bash for循环 Shell Programming Essentials - C Style For Loop in Bash By JacksonML 循环是编程语言的基本概念之一&#xff0c;同样也是Bash编程的核心。当用户需要一遍又一遍地运行一系列命令直到达到特定条件时&#xff0c;例如&#xff1…