vue整合百度地图显示指定地点信息


Posted in Vue.js onApril 06, 2022

先看看效果图

vue整合百度地图显示指定地点信息

一、安装相关依赖

npm i --save vue-baidu-map

二、在main.js中引用

import BaiduMap from "vue-baidu-map"
Vue.use(BaiduMap,{
  ak: '你的密钥(百度地图开放API官网可免费申请)'
})

三、创建地图工具 map.js

export function MP(ak) {  
    return new Promise(function (resolve, reject) {  
      window.init = function () {  
        resolve(BMap)  
      }  
      var script = document.createElement("script");  
      script.type = "text/javascript";  
      script.src = "http://api.map.baidu.com/api?v=2.0&ak="+"你的密钥"+"&callback=init";  
      script.onerror = reject;  
      document.head.appendChild(script);  
    })  
  }  

在需要用到地图的文件引入该工具

import { MP } from "@/utils/map.js";

四、绘制地图

1、创建一个容器展示地图,给容器指定一个id,根据页面的具体需求指定容器的宽和高

<div class="map">
    <div id="container" style="height: 300px; width: 100%" ref="allmap"></div>
</div>

2、在data中定义需要用到的数据

data() {
    return {
        dialogMap: false,
    mapPointName: "",
    mapGetshow: true
    }
}

3、定义全局的map地图对象和geocoder地理编码对象

var map;
let geoc = null;

4、创建一个定位地点的方法,添加要展示的地点的名称,此处也可动态指定

mapNameChange() {
      let that = this,
        point,
        marker = null;
      let local = new BMap.LocalSearch(map, {
        renderOptions: { map: map },
        onSearchComplete: (res) => {
          if (local.getResults() != undefined) {
            map.clearOverlays(); //清除地图上所有覆盖物
            if (local.getResults().getPoi(0)) {
              point = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果
              map.centerAndZoom(point, 10);
              marker = new BMap.Marker(point); // 创建标注
              map.addOverlay(marker); // 将标注添加到地图中
              marker.enableDragging(); // 可拖拽
              geoc.getLocation(point, function (rs) {
                var addComp = rs.addressComponents;
                that.mapPointName =
                  addComp.province +
                  ", " +
                  addComp.city +
                  ", " +
                  addComp.district +
                  ", " +
                  addComp.street +
                  ", " +
                  addComp.streetNumber;
              });
            } else {
              console.log("未搜索到结果")
            }
          } else {
            alert("未搜索到结果");
          }
        },
      });
      local.search("岳阳楼"); //要展示的地点
    },

5、在mounted函数中调用上述方法并绘制地图

mounted() {
    this.$nextTick(function () {
      var _this = this;
      MP(_this.ak).then((BMap) => {
        let that = this;
        this.dialogMap = !this.dialogMap;
        if (that.mapGetshow) {
          map = new BMap.Map("container");    //存放地图容器的id
          geoc = new BMap.Geocoder();
          map.enableScrollWheelZoom();
        }
        _this.mapNameChange()    //调用定位地点的方法
      });
    });
  }

到此这篇关于vue整合百度地图显示指定地点信息的文章就介绍到这了,更多相关vue 百度地图显示地点内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
在vue中通过render函数给子组件设置ref操作
Nov 17 Vue.js
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
Vue实现简易购物车页面
Dec 30 Vue.js
vue 递归组件的简单使用示例
Jan 14 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
vue组件的路由高亮问题解决方法
May 11 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 Vue.js
vue css 相对路径导入问题级踩坑记录
Jun 05 Vue.js
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
Vue Element plus使用方法梳理
Dec 24 Vue.js
vue中使用mockjs配置和使用方式
VUE使用draggable实现组件拖拽
Apr 06 #Vue.js
教你部署vue项目到docker
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 #Vue.js
vue中div禁止点击事件的实现
Apr 02 #Vue.js
Vue组件更新数据v-model不生效的解决
Apr 02 #Vue.js
Vue+TypeScript中处理computed方式
Apr 02 #Vue.js
You might like
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
php实现的递归提成方案实例
2015/11/14 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
用jscript实现新建word文档
2007/06/15 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
自己使用总结Python程序代码片段
2015/06/02 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
详解Python之unittest单元测试代码
2018/01/24 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Python打印不合法的文件名
2020/07/31 Python
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
家长对小学生的评语
2014/01/28 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
反对邪教标语
2014/06/30 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
怎样写辞职信
2015/02/27 职场文书
教师反邪教心得体会
2016/01/15 职场文书