热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

百度地图接口实现添加坐标点和路线

知了堂姐
2024-07-09 11:12:24
0

之前在工作中实现了一个小的功能模块是调用百度地图的接口,实现初始化位置点和路线以及自己添加位置点和路线的功能,现在记录一下,方便自己以后来回顾知识。 此demo主要实现了以下功能

  1. 在地图上添加位置点,并添加位置点的名称备注,右键停止添加位置点,添加点之后在左侧有一个位置点的列表,当点击列表中的点时,地图会将中心点移动到该点,并在点上显示标签为该位置点的名称备注。
  2. 在地图上可以添加一条路线,完成路线时右键停止,然后点击保存路线会弹出该线上所有折点的位置点所构成的字符串,点击编辑路线,路线就开启编辑功能,可以修改路线。

下面是添加点的效果图

添加路线时的效果图

以下是JS部分源码

var map;
var myVue;
var addpoint = false;  //添加点的判断
var addline = false;  //添加线的判断
$(function () {
    initMap();
    myVue = new Vue({
        el:'#app',
        data:{
            action:'',
            points:[],      // 点的集合
            linepoints:[],  //路线上的点的集合
            mouseMarker:'',  //跟随鼠标移动的marker点
            mouseMarkerTitle:'',  //鼠标移动时显示的label
            lines:[],       //线的集合
            mouseLine:{} ,   //跟随鼠标移动时的虚拟线
            initLine:null,    //初始化时的线
            myIcon: '',
            tmpLabel:'',
            editLine:'',     //可编辑的路线
            dialogVisible:false,   //控制信息框的显示与隐藏
            lineInfo:'',          //路线上的折点组成的字符串  lng,lat;lng,lat...
        },
        methods:{
            //菜单项位置点点击事件
            pointClick:function () {
                this.clear();
                this.action = "point";
                map.disableDoubleClickZoom();
                map.addEventListener('rightclick',myVue.clear);
                map.addEventListener('mousemove',myVue.mouseMove);
                map.addEventListener('click',myVue.addpoint);
            },
            //菜单项线点击事件
            lineClick:function () {
                myVue.clear();
                this.action = "line";
                map.addEventListener('click',this.addLine)
                map.addEventListener('rightclick',myVue.clear);
                map.addEventListener('mousemove',myVue.mouseMove);
            },
            save:function () {
                if (this.editLine!=""){
                    this.editLine.disableEditing();
                    this.linepoints = this.editLine.getPath();
                }
               const {linepoints} = this;
               this.lineInfo = "";
               for(let i=0;i {
                        done();
                    })
                    .catch(_ => {});
            },
            mouseMove:function (e) {
                //console.log(1);
                if (this.action=='point'){
                    myVue.showMousePoint(e);
                }else if(this.action=='line'){
                    myVue.showMouseLine(e);
                }
            },
            addpoint:function (e) {
                if (this.action=='point'){
                    this.$prompt('请输入位置点名称', '提示', {
                        confirmButtonText: '确定',
                        cancelButtonText: '取消',
                    }).then(({ value }) => {
                        var marker = new BMap.Marker(e.point,{icon:this.myIcon});
                        map.addOverlay(marker);
                        marker.name = value;
                        myVue.points.push(marker);
                        this.$message({
                            type: 'success',
                            message: '位置点: ' + value+'添加成功',
                        });
                    }).catch(() => {
                        this.$message({
                            type: 'info',
                            message: '位置点添加失败'
                        });
                    });
                }
            },
            addLine:function (e) {
                if(this.action=='line'){
                    if (this.linepoints.length>0){
                        const line = new BMap.Polyline([this.linepoints[this.linepoints.length-1],e.point],{strokeColor: '#00F0f0',strokeWeight:5,strokrOpacity:1});
                        map.addOverlay(line);
                        this.lines.push(line);
                    }
                    this.linepoints.push(e.point)
                }
            },
            showMouseLine:function (e) {
                if (this.mouseMarker==""){
                    const mouseMarker = new BMap.Marker(e.point,{icon:this.myIcon});
                    map.addOverlay(mouseMarker);
                    this.mouseMarker = mouseMarker;
                }else {
                    this.mouseMarker.setPosition(e.point);
                }
                if (this.linepoints.length>0){
                    const mouseline = new BMap.Polyline([this.linepoints[this.linepoints.length-1],e.point],{strokeColor: '#00F5A9',strokeWeight:5,strokrOpacity:0.3});
                    map.addOverlay(mouseline);
                    map.removeOverlay(this.mouseLine);
                    this.mouseLine = mouseline;
                }
            },
            showMousePoint:function (e) {
                if (this.mouseMarker==""){
                    this.mouseMarker = new BMap.Marker(e.point,{icon:this.myIcon});
                    map.addOverlay(this.mouseMarker);
                }
                this.mouseMarker.setPosition(e.point);
            },
            toCenter:function (i) {
               if (myVue.tmpLabel!=''){
                   map.removeOverlay(myVue.tmpLabel);
                   myVue.tmpLabel = '';
               }
                map.panTo(myVue.points[i].point);
                var str = " 
"+myVue.points[i].name+"
"; const label = new BMap.Label(str,{position:myVue.points[i].point}); myVue.tmpLabel = label; map.addOverlay(label); } }, mounted:function () { var myIcon = new BMap.Icon("imgs/point.png", new BMap.Size(40, 50)) myIcon.setImageSize(new BMap.Size(40,50)); this.myIcon = myIcon; this.points = initPoints(); } }) }) function initPoints(){ var myIcon = new BMap.Icon("imgs/point.png", new BMap.Size(40, 50)) myIcon.setImageSize(new BMap.Size(40,50)); var marker = []; marker[0] = new BMap.Marker(new BMap.Point(118.082868,36.829153),{icon:myIcon}); marker[0].name = "东方实验学校"; marker[1] = new BMap.Marker(new BMap.Point(118.075933,36.830077),{icon:myIcon}); marker[1].name = "东方星城"; marker[2] = new BMap.Marker(new BMap.Point(118.067365,36.834728),{icon:myIcon}); marker[2].name = "温馨家园"; marker[3] = new BMap.Marker(new BMap.Point(118.070112,36.83906),{icon:myIcon}); marker[3].name = "魏家庄"; marker[4] = new BMap.Marker(new BMap.Point(118.0575,36.829644),{icon:myIcon}); marker[4].name = "流泉新村"; marker[5] = new BMap.Marker(new BMap.Point(118.0564458,36.838945),{icon:myIcon}); marker[5].name = "中房翡翠园"; marker[6] = new BMap.Marker(new BMap.Point(118.055272,36.833977),{icon:myIcon}); marker[6].name = "柳泉中学"; marker[7] = new BMap.Marker(new BMap.Point(118.042174,36.834829),{icon:myIcon}); marker[7].name = "金丽大厦"; marker[8] = new BMap.Marker(new BMap.Point(118.047978,36.830424),{icon:myIcon}); marker[8].name = "淄博市公安局"; for (let i=0;i

拓展:高德地图接口api



 

    
    
    
    Document
    
    
    
    
    
    
    


 

    
    
 
    
    
选择模式
拖拽地图模式 拖拽图标模式
选址结果
经纬度:
地址:
最近的路口:
最近的路:
最近的POI:

两者的区别

1、对于使用者的主要区别:

高德注重导航的功能,

1、有很多路连名字都没有,但是高德依旧可以标记出来

用于骑行、徒步等低速运动,需要更详细地显示细节,高德地图则好于百度

2、高德语音提示比较全面,导航只听语音的话

百度注重生活的功能

1、实景功能 三维效果逼真,方便用户能够精准的找出目的位置

2、商家服务 对查找商家等

路线的优选

高德会给出路程最短的(省油,适合长图)

百度则有更多的考虑,包括避开拥堵路段(省时,适合城市里)

2、对开发者的主要区别:

百度地图:

网页版地图平台更好(Android、IOS、WEB)。

支持全景API

POI数据很丰富

缺点:api文档(烂的一批)

高德地图:

开发者人群的支持面更高,

平台适用性更好(Android、IOS、windows phone、Win8、web)。


以上就是关于“百度地图接口实现添加坐标点和路线”的干货内容了哦,若想了解更多干货内容可联系知了小姐姐哦

大家都在看

零基础入门软件测试需要学什么?这些入门技巧必看

2024-07-09 浏览次数:0

鸿蒙北向开发能找到工作吗?

2024-07-09 浏览次数:0

Vue 如何实现数据的双向绑定的

2024-07-09 浏览次数:0

你认真写代码的样子,真迷人

2024-07-09 浏览次数:0

考研VS就业两手抓,有实力才有底气

2024-07-09 浏览次数:0

目前Java编程语言最流行的7个框架,你了解多少...

2024-07-09 浏览次数:0
最新资讯
node.js是什么?前端用n...   Node.js是什么东西呢?很多人都不知道,简单的说 Node.js 就是运行在服务端的 Jav...
jsp和servlet的区别和...   Jsp和servlet都是学习java的必经之路,那你知道jsp和servlet的区别的联系吗?...
JSP 与 Servlet 的...   Jsp 和 Servlet 均是学习 Java 的重要途径,那么您是否了解它们之间的区别与联系呢...
JSP与Servlet:理解...   JSP(JavaServer Pages)和 Servlet 是 Java Web 开发中的两项...
JSP与Servlet:Jav...   在Java Web开发领域,JSP(JavaServer Pages)和Servlet是学习路径...
node.js是什么?前端用n... Node.js是什么东西呢?很多人都不知道,简单的说 Node.js 就是运行在服务端的 JavaS...
jsp与html有什么区别和联... Jsp是一种衔接技术,有人认为是前端,也有人认为是后端。Jsp与HTML有什么区别和联系呢?静态与动...
jsp的内置对象有哪些?ses... Jsp是曾经特别火爆的一种技术,但是现在使用的已经非常少了。你知道jsp的内置对象有哪些?sessi...
选择模式
拖拽地图模式 拖拽图标模式
选址结果
经纬度:
地址:
最近的路口:
最近的路:
最近的POI:

两者的区别

1、对于使用者的主要区别:

高德注重导航的功能,

1、有很多路连名字都没有,但是高德依旧可以标记出来

用于骑行、徒步等低速运动,需要更详细地显示细节,高德地图则好于百度

2、高德语音提示比较全面,导航只听语音的话

百度注重生活的功能

1、实景功能 三维效果逼真,方便用户能够精准的找出目的位置

2、商家服务 对查找商家等

路线的优选

高德会给出路程最短的(省油,适合长图)

百度则有更多的考虑,包括避开拥堵路段(省时,适合城市里)

2、对开发者的主要区别:

百度地图:

网页版地图平台更好(Android、IOS、WEB)。

支持全景API

POI数据很丰富

缺点:api文档(烂的一批)

高德地图:

开发者人群的支持面更高,

平台适用性更好(Android、IOS、windows phone、Win8、web)。


以上就是关于“百度地图接口实现添加坐标点和路线”的干货内容了哦,若想了解更多干货内容可联系知了小姐姐哦

JS

上一篇:SpringBoot整合QQ邮件发送

下一篇:开发神器EasyCode

相关内容

node.js是什么?前端...
  Node.js是什么东西呢?很多人都不知道,简单的说 Node...
2024-10-31 15:06:26
jsp和servlet的区...
  Jsp和servlet都是学习java的必经之路,那你知道js...
2024-08-12 11:24:16
JSP 与 Servlet...
  Jsp 和 Servlet 均是学习 Java 的重要途径,那...
2024-08-12 11:22:55
JSP与Servlet:...
  JSP(JavaServer Pages)和 Servlet ...
2024-08-12 11:20:21
JSP与Servlet:J...
  在Java Web开发领域,JSP(JavaServer Pa...
2024-08-12 11:14:16
node.js是什么?前端...
Node.js是什么东西呢?很多人都不知道,简单的说 Node.j...
2024-07-09 11:12:24

热门资讯

就业课程介绍(Java+前端+... Java+大数据,前端全栈,信息安全
关于我们 请输入文章描述
0基础转行信安,他如何做到月薪... 转行并非简单的换份工作,而是我们在职场进行自我认同、重塑身份的一个过程。今天知了小姐姐为大家介绍一位...
【前端每日一题】什么是BFC?... 秋招马上就要开始了,小伙伴们最近在准备面试的东西没呢,知了姐今天将蛋糕哥整理的前端面试题共享出来,同...
cisp考试费用多少?cisp...   随着网络技术的快速发展,网络安全问题变得越来越重要。那么,CISP考试费用多少?CISP报名条件...
pythone 文件和数据格式... 关于 Python 对文件的处理,以下选项中描述错误的是
img标签的onerror事件... 1.img 标签除了 onerror 属性外,还有其他获取管理员路径的办法吗? src 指定一个远程...
网络安全运维岗面试题及答案详解... 在当今数字化时代,网络安全运维工程师的角色变得愈发重要。为了保障网络安全,各个企业都需要拥有一支经验...
知了堂官网V3第一版内测邀请 经过几个月的加班加点,我们终于迎来了知了堂官网3.1.0版本 现正招募内测中
川农第一次线下拓展精彩瞬间 5月15日,知了堂的哥哥姐姐们携手企业拓展教练浩浩荡荡奔赴川农。
-->