如何将百度地图包装成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 相关文章推荐
利用jq让你的div居中的好方法分享
Nov 21 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
Feb 28 Javascript
jQuery检测鼠标左键和右键点击的方法
Mar 17 Javascript
Bootstrap table的使用方法
Nov 02 Javascript
基于Vue.js实现简单搜索框
Mar 26 Javascript
函数四种调用模式以及其中的this指向
Jan 16 Javascript
巧用canvas
Jan 21 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
Aug 17 Javascript
Vue router安装及使用方法解析
Dec 02 Vue.js
详细聊聊vue中组件的props属性
Nov 02 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
PHP编程与应用
2006/10/09 PHP
解析zend Framework如何自动加载类
2013/06/28 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
python绘制随机网络图形示例
2019/11/21 Python
Python flask框架端口失效解决方案
2020/06/04 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
跟单文员的岗位职责
2013/11/14 职场文书
小学门卫岗位职责
2013/12/17 职场文书
浪费资源的建议书
2014/03/12 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
红旗渠导游词
2015/02/09 职场文书
公司管理制度范本
2015/08/03 职场文书
晚会开幕词范文
2016/03/04 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python