如何将百度地图包装成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 相关文章推荐
JS 学习笔记 防止发生命名冲突
Jul 30 Javascript
Mootools 1.2教程 排序类和方法简介
Sep 15 Javascript
javascript offsetX与layerX区别
Mar 12 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
May 27 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
Jan 25 Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
Vuejs第十二篇之动态组件全面解析
Sep 09 Javascript
如何使用headjs来管理和异步加载js
Nov 29 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
Apr 12 Javascript
详解如何去除vue项目中的#——History模式
Oct 13 Javascript
Vue混入mixins滚动触底的方法
Nov 22 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:风雨欲来 路在何方?
2006/10/09 PHP
多重?l件?合查?(二)
2006/10/09 PHP
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
json数据的列循环示例
2013/09/06 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
js编写的treeview使用方法
2016/11/11 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
Python实现求两个数组交集的方法示例
2019/02/23 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
2020/08/05 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
小学生国庆演讲稿
2014/09/05 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2014年路政工作总结
2014/12/10 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
深入理解 Golang 的字符串
2022/05/04 Golang
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS