如何将百度地图包装成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 15 Javascript
jQuery ul标签下拉菜单演示代码
Dec 11 Javascript
javascript实现上传图片并预览的效果实现代码
Apr 11 Javascript
JS的千分位算法实现思路
Jul 31 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
jquery转盘抽奖功能实现
Nov 13 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
JavaScript实现简单生成随机颜色的方法
Sep 21 Javascript
JS闭包经典实例详解
Dec 20 Javascript
基于JavaScript实现留言板功能
Mar 16 Javascript
JavaScript组合模式---引入案例分析
May 23 Javascript
video.js添加自定义组件的方法
Dec 09 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 一个比较完善的简单文件上传
2010/03/25 PHP
php 定界符格式引起的错误
2011/05/24 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
php+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
浅析PHP开发规范
2018/02/05 PHP
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
用Python实现协同过滤的教程
2015/04/08 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
机电工程学生自荐信范文
2013/12/07 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
中班开学寄语
2014/04/04 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
结婚十年感言
2015/07/31 职场文书
商场广播稿范文
2015/08/19 职场文书
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js