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自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
vue实现表格合并功能
Dec 01 Vue.js
vue开发chrome插件,实现获取界面数据和保存到数据库功能
Dec 01 Vue.js
Vue 组件注册全解析
Dec 17 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
vue实现简易的双向数据绑定
Dec 29 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
vue组件的路由高亮问题解决方法
May 11 Vue.js
使用这 6个Vue加载动画库来减少我们网站的跳出率
May 18 Vue.js
Vue图片裁剪组件实例代码
Jul 02 Vue.js
vue实现Toast组件轻提示
Apr 10 Vue.js
vue实现简易音乐播放器
Aug 14 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
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php中curl使用指南
2015/02/05 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
javascript demo 基本技巧
2009/12/18 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
使用python实现ANN
2017/12/20 Python
python实现简单http服务器功能
2018/09/17 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Python二维码生成识别实例详解
2019/07/16 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
Linux的文件类型
2016/07/05 面试题
村官工作鉴定评语
2014/01/27 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
闭幕式主持词
2014/04/02 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
公司年会策划方案
2014/05/17 职场文书
租车协议书
2015/01/27 职场文书
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python