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

news2024/12/25 10:33:09

 

         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>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

功放诊断测试

1.切换trace显示时间模式&#xff0c;Toggle time mode 2.测seedkey 需要加载seednkey.dll 3.功能寻址和物理寻址切换

idea恢复默认出厂设置

idea恢复默认出厂设置 1、IDEA 2021 之后&#xff0c; 在顶部工具栏&#xff0c;选择 File | Manage IDE Settings | Restore Default Settings. 2、或者双击shift搜索Restore Default settings然后点击restore and restart

MySQL安装——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

MySQLhttps://www.mysql.com/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码&#xff0c;使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变&#xff0c;同时添加静态分区&#xff0c;分区字段为etl_da…

ubuntu18.04 64 位安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

进入VirtuakBox官网&#xff0c;网址链接&#xff1a;Oracle VM VirtualBoxhttps://www.virtualbox.org/ 网页连接&#xff1a;Ubuntu Virtual Machine Images for VirtualBox and VMwarehttps://www.osboxes.org/ubuntu/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写S…

代码随想录算法训练营Day5 | 242.有效的字母异位词、349.两个数组的交集、202.快乐数、1. 两数之和

LeetCode 242 有效的字母异位词 本题思路&#xff1a;我们只需要分别统计&#xff0c;字符串 s ,字符串 t 中每个字符的出现次数&#xff0c;分别用两个数组来存储&#xff0c;然后再循环遍历对比两个数组中相同位置出现的次数&#xff0c;如果有不同的则返回 false。 统计完之…

双非大数据

双非本秋招上岸总结 个人简介 学历&#xff1a;双非&#xff1b; 专业&#xff1a;软件工程&#xff1b; 求职岗位&#xff1a;大数据开发工程师&#xff1b; 状态&#xff1a;已上岸 翻车经历 学校以Java后端开发为主流&#xff0c;我从大二开始学习Java&#xff0c;直到大四…

HarmonyOS(十四)——状态管理之@State装饰器(组件内状态)

前言 在初识状态管理我们了解了状态管理的基本概念&#xff0c;以及管理组件拥有的状态有哪几种装饰器&#xff0c;今天我们就来认识一下第一种装饰器&#xff1a;State装饰器&#xff08;组件内状态&#xff09;。 概述 State装饰的变量&#xff0c;或称为状态变量&#xf…

解决 Hbuilder打包 Apk pad 无法横屏 以及 H5 直接打包 成Apk

解决 Hbuilder打包 Apk pad 无法横屏 前言云打包配置 前言 利用VUE 写了一套H5 想着 做一个APP壳 然后把 H5 直接嵌进去 客户要求 在pad 端 能够操作 然后页面风格 也需要pad 横屏展示 云打包 配置 下面是manifest.json 配置文件 {"platforms": ["iPad"…

Vue--第十天

终极实战----大事件项目 1.简介&#xff1a; 2.创建项目&#xff1a; 1.创建&#xff08;159-163&#xff09;&#xff1a; 还是对着视频操作吧 2.路由&#xff1a; 3.element Plus: 导入element Plus 后不需要再导入插件配置&#xff0c;就连组件导入也不用 4.pinia构建用…

Ubuntu Desktop 22.04 设置 ssh 超时时间

Ubuntu Desktop 22.04 使用 ssh 连接服务器时&#xff0c;发现一段时间不操作就会自动断开连接&#xff0c;解决方法如下&#xff1a; 打开 /etc/ssh/ssh_config 文件&#xff1a; sudo vim /etc/ssh/ssh_config在文件最后添加&#xff1a; # ssh 客户端会每隔 30 秒发送一个…

网络(九)三层路由、DHCP以及VRRP协议介绍

目录 一、三层路由 1. 定义 2. 交换原理 3. 操作演示 3.1 图示 3.2 LSW1新建vlan10、20、30&#xff0c;分别对应123接口均为access类型&#xff0c;接口4为trunkl类型&#xff0c;允许所有vlan通过 3.3 LSW2新建vlan10、20、30&#xff0c;配置接口1为trunk类型&…

ElasticSearch单机或集群未授权访问漏洞

漏洞处理方法&#xff1a; 1、可以使用系统防火墙 来做限制只允许ES集群和Server节点的IP来访问漏洞节点的9200端口&#xff0c;其他的全部拒绝。 2、在ES节点上设置用户密码 漏洞现象&#xff1a;直接访问9200端口不需要密码验证 修复过程 2.1 生成认证文件 必须要生成…

JupyterHub 如何切换 conda 小环境

JupyterHub 如何切换 conda 小环境 服务器已经部署好 JupyterHub &#xff0c;相关端口请看对应答疑群群公告。在Jupyterhub 中使用 conda 创建的小环境&#xff0c;首先 ssh 登录上服务器或者在 JupyterHub 网页端打开终端 terminal。然后安装 conda &#xff0c;方法请见 Q4&…

动能方案 | 技术引领未来:两轮电动车遥控解锁方案探秘

随着电动交通工具的快速普及&#xff0c;创新性的智能解锁系统正在为两轮电动车带来更便捷、安全的使用体验。本文将深入介绍一种先进的两轮电动车遥控解锁方案&#xff0c;探讨其优势&#xff0c;并推荐一款先进的芯片技术&#xff0c;引领行业未来。 01方案介绍 1、技术原…

什么是tomcat?tomcat是干什么用的?

目录 Tomcat 的主要用途包括&#xff1a; 托管Java Web应用程序&#xff1a; Servlet 容器&#xff1a; 以下是关于Servlet容器的一些关键特性和功能&#xff1a; 生命周期管理&#xff1a; 多线程支持&#xff1a; HTTP请求处理&#xff1a; HTTP响应生成&#xff1a;…

《代码随想录》--二叉树(一)

《代码随想录》--二叉树 第一部分 1、二叉树的递归遍历2、二叉树的迭代遍历3、统一风格的迭代遍历代码4、二叉树的层序遍历226.翻转二叉树 1、二叉树的递归遍历 前序遍历 中序遍历 后序遍历 代码 前序遍历 class Solution {public List<Integer> preorderTraversal(T…

MySQL通过Binlog日志恢复数据库

一、MySQL Binlog 简介 MySQL 的二进制日志 binlog 可以说是 MySQL 最重要的日志&#xff0c;它记录了所有的 DDL 和 DML 语句&#xff08;除了数据查询语句select、show等&#xff09;&#xff0c;以事件形式记录&#xff0c;还包含语句所执行的消耗的时间&#xff0c;MySQL的…

rabbit mq 配置要点

rabbit mq是一款基于AMQP协议&#xff08;Advanced Message Queuing Protocol - 高级消息队列协议&#xff09;的消息队列。 生产者与消费者之间是通过Broker建立连接&#xff0c;在实际的项目中&#xff0c;他们是通过exchange和queue联系在一起的 生产者发送消息流程&#x…

磁盘阵列/视频监控系统EasyCVR新增邮件验证与定时更换登录密码功能

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…

unity—UGUI 点击按钮后,持续点击空格键会持续出发按钮

在unity开发当中&#xff0c;使用UGUI开发&#xff0c;无论是你代码绑定按钮事件&#xff0c;还是在Inspector窗口直接拖拽绑定的事件&#xff0c;点击按钮事件后&#xff0c;按空格键都会再次执行相关的方法。 默认情况下&#xff0c;Unity将空格键映射为UI按钮的Submit提交操…