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

 

         1、创建地图容器

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

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

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

 initMap(longitude, latitude) {
                let that = this
                that.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().lat
                    this.inputForm.longitude = marker.getPosition().lng
                    console.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.latitude
                    this.inputForm.longitude = res.data.longitude
                    this.initMap(this.inputForm.longitude, this.inputForm.latitude)
                })
            },
            initMap(longitude, latitude) {
                let that = this
                that.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().lat
                    this.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>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亿某通电子文档安全管理系统任意文件上传漏洞 CNVD-2023-59471

1.漏洞概述 亿某通电子文档安全管理系统是一款电子文档安全防护软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产。亿赛通电子文档安全管理系统UploadFileFromClientServiceForClient接口处存在任意文件…

大创项目推荐 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

2024年【建筑电工(建筑特殊工种)】报名考试及建筑电工(建筑特殊工种)新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年建筑电工(建筑特殊工种)报名考试为正在备考建筑电工(建筑特殊工种)操作证的学员准备的理论考试专题&#xff0c;每个月更新的建筑电工(建筑特殊工种)新版试题祝您顺利通过建筑电工(建筑特殊工种)考试。 1、【单…

内网离线搭建之----nginx高可用

1.系统版本 虚拟机192.168.9.184 虚拟机192.168.9.185 2.nginx以及依赖下载地址 nginx&#xff1a;nginx: download pcre&#xff1a;PCRE - Browse /pcre/8.45 at SourceForge.net zlib&#xff1a;zlib Home Site 基本都在置顶的资源里 3.检查环境安装依赖的依赖&#xf…

RS232转profinet网关扫码枪自由口与1500程序对比

RS232转profinet网关&#xff08;XD-PNR200&#xff09;自由口是一种用于将RS232串口信号转换为profinet协议的设备&#xff0c;它具有自由口的功能。本文以某自动化生产线为例进行案例研究。通过RS232转Profinet网关&#xff08;XD-PNR200&#xff09;&#xff0c;将生产线的多…

Elasticsearch 【版本7.X】之常用的语法大全

文章目录 监控相关 API 查看健康状况查看所有节点查看所有节点详细信息查看主节点查看所有索引查看所有分片 索引管理 创建索引查看索引查看索引字段类型修改索引字段删除索引别名 给索引添加别名查询某个索引下的别名给索引更换别名给索引解绑别名一个别名绑定多个索引查询ind…

xv6 文件系统(上)

〇、前言 本文将会结合 xv6 源码讨论文件系统的工作原理。 一、文件系统实现概述 xv6 文件系统可以用下面的图来表示&#xff1a; 按照分层的方式进行理解&#xff1a; 在最底层是磁盘&#xff0c;也就是一些实际保存数据的存储设备&#xff0c;正是这些设备提供了持久化存…

mysql函数()之常见字符串函数

MySQL中常见的字符串函数有以下几种&#xff1a; CONCAT()&#xff1a;将两个或多个字符串连接在一起。 用法&#xff1a;CONCAT(string1, string2, …) 效果图&#xff1a; LENGTH()&#xff1a;返回字符串的长度。 用法&#xff1a;LENGTH(string) 效果图&#xff1a; UP…

7款不容错过的前端特效源码分享(附源码及演示效果)

分享7款非常不错炫酷的前端特效源码 其中包含css动画特效、js原生特效、svg特效等 下面我会列出核心的代码 但你也可以点击预览获取查看该源码的最终展示效果及下载该源码资源 图像网格动画 纯js和css实现的多方位多样式的图像网格动画 点击预览获取 核心代码 <div class…

基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计图书管理系统

系统实现如下的基本管理功能: (1)用户分为两类:系统管理员&#xff0c;一般用户。 (2)提供用户注册和用户登录验证功能:其中一个登录用户的信息有:登录用户名&#xff0c;登录密码。 (3)管理员可以实现对注册用户的管理(删除)&#xff0c;并实现对图书的创建、查询、修改和删…

Java算法(十二):【数据结构与算法】 十大排序 之 二分查法 二分查法实现详细流程图分析 实现源码实例

二分查找 二分查找 二分查找就是返回有序序列中&#xff0c;需要查找的元素索引&#xff0c;无则-1。 需求&#xff1a;二分查找&#xff1a;手写实现数组元素的查找&#xff0c;存在返回索引&#xff0c;无则返回 -1&#xff1b;实现思路&#xff1a;&#xff08;前提是有序…

“源味河南县 牛羊天下鲜”河南县有机农畜产品发布会在博鳌召开

2023年12月17日&#xff0c;由中共青海省黄南州河南蒙古族自治县委员会、县人民政府主办的“源味河南县 牛羊天下鲜”绿色有机农畜产品发布会在海南博鳌举办。原农业部党组成员、中国农产品市场协会会长张玉香&#xff0c;原农业部党组成员、中国奶业协会战略发展委员会名誉副主…

VueStu03-插值表达式

插值表达式是 vue 的一种模板语法。 语法&#xff1a;{{ 表达式 }} 总结&#xff1a;

材料论文阅读/中文记录:Scaling deep learning for materials discovery

Merchant A, Batzner S, Schoenholz S S, et al. Scaling deep learning for materials discovery[J]. Nature, 2023: 1-6. 文章目录 摘要引言生成和过滤概述GNoME主动学习缩放法则和泛化 发现稳定晶体通过实验匹配和 r 2 S C A N r^2SCAN r2SCAN 进行验证有趣的组合家族 扩大…

WEB渗透—PHP反序列化(四)

Web渗透—PHP反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩…

日本服务器:确保其稳定性的几个要点

​  在租用日本服务器时&#xff0c;用户们大多一定会关注它的稳定性&#xff0c;其实这些顾及都是正常的。毕竟&#xff0c;网站要想正常运行&#xff0c;保障服务器稳定是关键。本文将讨论有关如何保障日本服务器稳定性的一些有用技巧&#xff0c;希望对您有所帮助。 1.注重…

矩阵式键盘实现的电子密码锁

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit P14P1^4; //将P14位定义为P1.4引脚 sbit P15P1^5; //将P15位定义为P1.5引脚 sbit P16P1^6; //将P16位定义为P1.6引脚 sbit P17P1^7; //将P17位定义为P1.7引脚 sbit soundP3^7; //将so…

Spring Boot 3.2 + CRaC = 王炸!

前段时间发布了 Spring 6.1 和 SpringBoot 3.2&#xff0c;它们都完全支持 CRaC&#xff08;检查点协调恢复&#xff09;。 如果你想了解有关 CRaC 的更多信息&#xff0c;请随时阅读此处&#xff1a; https://docs.azul.com/core/crac/crac-introduction CRaC 是一个 OpenJDK…

MySQL锁机制

MySQL的锁机制用于管理事务对共享资源的并发访问&#xff0c;实现事务的隔离级别。 MySQL的锁比较多&#xff0c;下面我们按照四个维度来介绍相关的锁。 图 MySQL 锁的分类 1 加锁机制 悲观锁 操作数据时&#xff0c;认为其他线程也会对该数据进行更改。于是在获取数据时会先…

Gem5 checkkpoint使用: checkpoint恢复并运行parsec benchmark,运行和checkpoint时不同的新script

简介 Gem5 checkkpoint使用&#xff1a; 如何保存checkpoint&#xff0c;从checkpoint恢复&#xff0c;使用哪一层级的文件夹作为输入&#xff0c;-r 1制定检查点 顺序&#xff0c;并运行parsec benchmark。尤其提供运行和checkpoint时不同的新script的方法。不然每一次restor…