如何将百度地图包装成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 相关文章推荐
HTML-CSS群中单选引发的“事件”
Mar 05 Javascript
JavaScript开发时的五个注意事项
Dec 08 Javascript
Jquery实现带动画效果的经典二级导航菜单
Mar 22 Javascript
cookie.js 加载顺序问题怎么才有效
Jul 31 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
Aug 06 Javascript
javascript搜索框效果实现方法
May 14 Javascript
jQuery实现选项卡切换效果简单演示
Dec 09 Javascript
Javascript实现鼠标框选操作  不是点击选取
Apr 14 Javascript
vue引入ueditor及node后台配置详解
Jan 03 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
Jul 03 Javascript
Vuex中的State使用介绍
Jan 19 Javascript
微信小程序实现吸顶效果
Jan 08 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
2019十大人气国漫
2020/03/13 国漫
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
MUI  Scroll插件的使用详解
2017/04/13 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
新娘父亲婚礼致辞
2014/01/16 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
优秀经理获奖感言
2014/03/04 职场文书
应用心理学专业求职信
2014/08/04 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
详解Redis集群搭建的三种方式
2021/05/31 Redis
CSS基础详解
2021/10/16 HTML / CSS
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript