如何将百度地图包装成Vue的组件的方法步骤


Posted in Javascript onFebruary 12, 2019

(1)在index.html文件中引入百度地图

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=piXQ5CgHFqEefqCVbhhBFfe6HjF7l4zW "></script>

如何将百度地图包装成Vue的组件的方法步骤

(2)在webpack.base.conf.js文件内添加external选项,在module.exports内部,和entry平级;

externals: {
  "BMap": "BMap" 

},

如何将百度地图包装成Vue的组件的方法步骤

(3)添加地图组件BMapComponent.vue,这里主要注意两点:

a)使用BMap的时候需要import (经过本人测试,如果不用import会提示BMap未定义)

如何将百度地图包装成Vue的组件的方法步骤    

b)注意一定要给bmap的div设置高度,否则会看不见

该组件的代码如下

<!-- 页面模版 -->
<template>
 <div>
  <!--header-->
  <com-header :title="headerData.title" :toLink="headerData.toLink"></com-header>
  <!--header end-->
 
  <!--container-->
  <div id="allmap" 
      style="
        width: 100%; 
        height:200px; 
        border: 1px solid gray;
        overflow:hidden;">
    </div>
  <!--container end-->
 </div>
</template>
<script>
import comHeader from 'components/comHeader'
import BMap from 'BMap'
export default {
 components: {
  comHeader
 },
 data: () => ({
  headerData: {
   title: '网点详情',
   toLink: '/SalesOutlets'
  }
 }),
 created () {
  // 组件创建完后获取数据,这里和1.0不一样,改成了这个样子
  this.loadMap()
  // this.ready() // 如果在此处直接调用this.ready()方法,将无法加载地图
 },
 mounted () {
  this.ready()
 },
 methods: {
  loadMap: function () {
   console.log(this.$route.params.name)
   console.log(this.$route.params.addr)
   console.log(this.$route.params.phone)
   // setTimeout(this.ready, 0)
  },
  ready: function () {
   var map = new BMap.Map('allmap')
   map.enableScrollWheelZoom(true)
   console.log(map)
 
   var localSearch = new BMap.LocalSearch(map)
   // localSearch.enableAutoViewport() // 允许自动调节窗体大小
   map.clearOverlays() // 清空原来的标注
   localSearch.setSearchCompleteCallback(function (searchResult) {
    var poi = searchResult.getPoi(0)
    map.centerAndZoom(poi.point, 20)
    var point = new BMap.Point(poi.point.lng, poi.point.lat)
    var marker = new BMap.Marker(point) // 创建标注,为要查询的地方对应的经纬度
    map.addOverlay(marker)
   })
   localSearch.search(this.$route.params.addr)
  }
 }
}
</script>
<style>
 /* 去掉地图左下角的百度LOGO */
 .anchorBL {
  display:none
 }
</style>

如果直接在实例生命周期的created中调用this.ready()方法将无法加载地图,我在index.html中加入了一个id为allmap的div,当我调用该组件时,该组件上的div没有显示地图,而index.html中id为allmap的div里却显示了地图,经过测试我猜测是因为该组件还没有初始化完毕,导致new BMap.Map('allmap')时实例化地图对象失败。所以应该在实例生命周期的mounted中调用this.ready()方法。

实例生命周期参见:https://cn.vuejs.org/v2/guide/instance.html

(4) 在父组件中使用
    a)引入 import BMapComponent from './components/BMapComponent.vue'
    b)在template中增加标签

<b-map-component></b-map-component>
     

如何将百度地图包装成Vue的组件的方法步骤

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
Nov 12 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
js对象之JS入门之Array对象操作小结
Jan 09 Javascript
JavaScript中获取Radio被选中的值
Nov 11 Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
JS绘制微信小程序画布时钟
Dec 24 Javascript
详解angular中如何监控dom渲染完毕
Jan 03 Javascript
Vue生命周期示例详解
Apr 12 Javascript
vue-resouce设置请求头的三种方法
Sep 12 Javascript
vue后台管理之动态加载路由的方法
Aug 13 Javascript
JavaScript中this用法学习笔记
Mar 17 Javascript
微信小程序websocket聊天室的实现示例代码
Feb 12 #Javascript
深入探讨JavaScript的最基本部分之执行上下文
Feb 12 #Javascript
图文详解vue框架安装步骤
Feb 12 #Javascript
详解vue组件中使用路由方法
Feb 12 #Javascript
说说Vue.js中的functional函数化组件的使用
Feb 12 #Javascript
详解Vue用cmd创建项目
Feb 12 #Javascript
谈谈JavaScript中super(props)的重要性
Feb 12 #Javascript
You might like
PHP+MYSQL的文章管理系统(二)
2006/10/09 PHP
理解PHP5中static和const关键字的区别
2007/03/19 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
javascript 打印页面代码
2009/03/24 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
Node.js的特点详解
2017/02/03 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
pymssql ntext字段调用问题解决方法
2008/12/17 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
python实现redis三种cas事务操作
2017/12/19 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
python实现按日期归档文件
2021/01/30 Python
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
应聘医药代表职位求职信
2013/10/21 职场文书
农村文化建设标语
2014/10/07 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
企业党建工作总结2015
2015/05/26 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python