如何将百度地图包装成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 方法大全方便学习参考
Feb 25 Javascript
动态调用CSS文件的JS代码
Jul 29 Javascript
jquery 使用简明教程
Mar 05 Javascript
js实现checkbox全选和反选示例
May 01 Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 Javascript
jQuery中appendTo()方法用法实例
Jan 08 Javascript
JavaScript核心语法总结(推荐)
Jun 02 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
解决Vue打包之后文件路径出错的问题
Mar 06 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
May 03 Javascript
微信小程序实现九宫格抽奖
Apr 15 Javascript
javascript中join方法实例讲解
Feb 21 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 命令行参数详解及应用
2011/05/18 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
javascript常用功能汇总
2015/07/05 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
从零学python系列之从文件读取和保存数据
2014/05/23 Python
Python实现大文件排序的方法
2015/07/10 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
简单了解django缓存方式及配置
2019/07/19 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
C面试题
2015/10/08 面试题
Linux中如何用命令创建目录
2015/01/12 面试题
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
计算机应用与科学个人的自我评价
2013/11/15 职场文书
暑期社会实践方案
2014/02/05 职场文书
安全大检查实施方案
2014/02/22 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
会计人员演讲稿
2014/09/11 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
成本会计岗位职责
2015/02/03 职场文书
初中语文教师研修日志
2015/11/13 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
Python中的tkinter库简单案例详解
2022/01/22 Python