如何将百度地图包装成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 相关文章推荐
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
Feb 26 Javascript
javascript 闭包
Sep 15 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
Jun 06 Javascript
JQuery勾选指定name的复选框集合并显示的方法
May 18 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
Jun 04 Javascript
coffeescript使用的方式汇总
Aug 05 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
Apr 14 Javascript
vue 自定义提示框(Toast)组件的实现代码
Aug 17 Javascript
Node.js 使用request模块下载文件的实例
Sep 05 Javascript
Nuxt.js SSR与权限验证的实现
Nov 21 Javascript
JavaScript canvas动画实现时钟效果
Feb 10 Javascript
vue滑动吸顶及锚点定位的示例代码
May 10 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
UCenter Home二次开发指南
2009/05/28 PHP
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
php列出一个目录下的所有文件的代码
2012/10/09 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
python k-近邻算法实例分享
2014/06/11 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
python实现批量修改文件名
2020/03/23 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
大学生团日活动总结
2015/05/06 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
pandas数值排序的实现实例
2021/07/25 Python
Python列表的索引与切片
2022/04/07 Python
Golang gRPC HTTP协议转换示例
2022/06/16 Golang