如何将百度地图包装成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遍历 table的脚本
Jul 23 Javascript
js 禁用浏览器的后退功能的简单方法
Dec 10 Javascript
artDialog双击会关闭对话框的修改过程分享
Aug 05 Javascript
AngularJS入门教程之AngularJS表达式
Apr 18 Javascript
jQuery中的通配符选择器使用总结
May 30 Javascript
javascript 秒表计时器实现代码
Mar 09 Javascript
利用node.js实现自动生成前端项目组件的方法详解
Jul 12 Javascript
微信小程序开发animation心跳动画效果
Aug 16 Javascript
React.js绑定this的5种方法(小结)
Jun 05 Javascript
微信小程序实现页面浮动导航
Jan 28 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
Feb 18 Javascript
Vue项目路由刷新的实现代码
Apr 17 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作的文本留言本的例子(五)
2006/10/09 PHP
php中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
判断对象是否Window的实现代码
2012/01/10 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
用python实现面向对像的ASP程序实例
2014/11/10 Python
Windows下python3.6.4安装教程
2018/07/31 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
2020/03/27 Python
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
秋季红领巾广播稿
2014/01/27 职场文书
九年级历史教学反思
2014/01/27 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
企业愿景口号
2015/12/25 职场文书
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python