如何将百度地图包装成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 打造动态渐变按钮 详细图文教程
Apr 25 Javascript
关于URL中的特殊符号使用介绍
Nov 03 Javascript
浅谈javascript中的作用域
Apr 07 Javascript
js 有框架页面跳转(target)三种情况下的应用
Apr 09 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
May 23 Javascript
基于jPlayer三分屏的制作方法
Dec 21 Javascript
浅谈angular.js跨域post解决方案
Aug 30 Javascript
基于Bootstrap table组件实现多层表头的实例代码
Sep 07 Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 Javascript
Angular2中监听数据更新的方法
Aug 31 Javascript
如何制作一个Node命令行图像识别工具
Dec 12 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
Feb 25 Vue.js
微信小程序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
ajax php 实现写入数据库
2009/09/02 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
php把session写入数据库示例
2014/02/26 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
Python中for循环详解
2014/01/17 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
简述数据库的设计过程
2015/06/22 面试题
机电一体化自荐信
2013/12/10 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
安全生产大检查方案
2014/05/07 职场文书
迎国庆演讲稿
2014/09/15 职场文书
2014年学生工作总结
2014/11/20 职场文书
财务工作失职检讨书
2014/11/21 职场文书
nginx.conf配置文件结构小结
2022/04/08 Servers