最近在做一个项目,技术采用的是Vue.js套餐,有个百度地图的需求,当时,大脑宕机,立马去引入百度地图API,当时想到两种方法,一种是在index.html中全局引入js,此法吾不喜,就采用了第二种异步加载jsonp的方式,细节无关本文,暂且不提。噼里啪啦~噼里啪啦~ 代码一气呵成,本地测试完,立马上服务器测试,what ??? 什么鬼 ? 进入界面后,我的地图呢??地图呢??回看代码,代码中有一行window.onload = loadScript,呃~呃~呃~,vue中界面跳转不会触发这个, 欧德科 ??? 坑爹啊~ 有木有??然后立马百度进行搜索,此时眼前一亮,嘻嘻嘻~,我看到了什么??vue-baidu-map,然后爱酱去官网看文档,看完第一反应莫名其妙~~,为了那些跟我一样不认真看文档,粗心大意,脑袋容易宕机的码农们 ,特记录下这个插件的使用方法。

  vue-baidu-map 官方地址

  

  安装:

   这里只介绍npm安装方式

$ npm install vue-baidu-map --save

  注册:

   注册的方式有两种 : 全局注册 & 局部注册 ,各位可以根据自己的需求来选择,我个人采用的是局部注册,按需加载。个人注册了一个公共的MapView.vue组件来实现地图的功能,存放在项目组件库components/common下。

   官方文档描述1:局部注册的 BaiduMap 组件必须声明 ak 属性。

     注: 这个ak指的是你的百度地图开放平台获取到的秘钥

   官方文档描述2:所有的独立组件均存放在 vue-baidu-map/components 文件夹下,按需引用即可。

     刚开始,我就是被这句话给迷惑了,由于没认真看文档,又看到代码,傻傻的去组件库components中新建了一个vue-baidu-map文件夹,然后去注册了一个Map.vue的组件。

     No~No~No~ 不是这样的。注意:这里指的是vue-baid-map文件夹下的components组件库,而不是我们项目中自己创建的components组件库,不要跟我一样犯傻。

  在安装完vue-baidu-map后,在node_modules中会有一个vue-baidu-map文件夹,我们现在来找到它,它的结构是这样的:

    vue-baidu-map

      |__ .github

      |__  build

      |__ components

      |__ test

      |__ types

  看到了吗? 这里有个components组件库,而官方描述中叫我们引入的是这个文件下的独立组件。

  实现:

    现在我们来看看代码。

    在个人注册的组件MapView.vue中来实现地图功能,

<template>
<baidu-map class="map" :center="center" :zoom="zoom" @ready="handler"></baidu-map>
  <!-- baidu-map指的既是BaiduMap组件 -->
</template>
<script>
import BaiduMap from 'vue-baidu-map/components/Map/Map.vue'
export default {
data () {
return {
center: {lng: 0, lat: 0}, //经纬度
zoom: 3  //地图展示级别
}
},
  components: {
    BaiduMap //指定组件模板
  },
methods: {
handler ({BMap, map}) {
console.log(BMap, map)
this.center.lng = 116.404
this.center.lat = 39.915
this.zoom = 15
}
}
}
</script>
<style lang="less" scoped>
.map {
  width: 100%;
  height: 500px; //必须给容器指高度,要不然地图将显示在一个高度为0的容器中,自然看不到
  
  /deep/ .anchorBL {  //隐藏左下角百度地图logo
    display: none;
  }
}
</style>

  如你需要使用其他的组件,只需要根据官方提供的控件名,通过 import引入组件,然后在components·中指定组件模板,在template中使用即可。

  例如:现在需要使用定位控件,官方提供的控件名是:BmGeolocation,接下来直接上代码:

  

<template>
<baidu-map class="map" :center="center" :zoom="zoom" @ready="handler">
    <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true"></bm-geolocation>
  </baidu-map>
</template>
<script>
 import BaiduMap from 'vue-baidu-map/components/Map/Map.vue
  import BmGeolocation from 'vue-baidu-map/components/controls/Geolocation.vue'
export default {
data () {
return {
center: {lng: 0, lat: 0},
zoom: 3 
}
},
  components: {
    BaiduMap,
     BmGeolocation
  },
methods: {
handler ({BMap, map}) {
console.log(BMap, map)
this.center.lng = 116.404
this.center.lat = 39.915
this.zoom = 15
}
}
}
</script>
<style lang="less" scoped>
.map {
  width: 100%;
  height: 500px;
  
  /deep/ .anchorBL {  
    display: none;
  }
}
</style>

文章内容就到此结束了。有什么不对的地方、不同的意见或者建议可以在底部留言。

Vue Baidu Map 插件的使用的更多相关文章

  1. vue Baidu Map --- vue百度地图插件

    vue Baidu Map 官网:https://dafrok.github.io/vue-baidu-map/#/zh/start/installation javascript 官网:http:/ ...

  2. vue2.0之Vue Baidu Map 局部注册使用

    文档地址:https://dafrok.github.io/vue-baidu-map/#/zh/start/usage 局部注册 <template> <baidu-map id= ...

  3. 使用Vue Baidu Map对百度地图实现输入框搜索定位

    前端时间需要在页面的输入框输入地址,搜索并在百度地图上获取选定结果的坐标,前端使用了Vue + Element-ui,地图方面直接使用了封装好的百度地图vue组件-vue-baidu-map     ...

  4. Vue Baidu Map局部注册实现和地图绘点

    需求:在vue项目中,实现用户选择地图绘点或者通过搜索关键字选点 <template> <div id="home"> <h2>首页地图< ...

  5. Add baidu map in your website (wordpress)

    手动挡 访问应用(AK)Key http://lbsyun.baidu.com/apiconsole/key Basic Map Generator http://api.map.baidu.com/ ...

  6. 提高Baidu Map聚合的效率

    百度的MAP的例子里提供了一个聚合效果,地址是http://developer.baidu.com/map/jsdemo.htm#c1_4 ,效果图如下图: 这个效果很赞,但效率很低,当数据量达到50 ...

  7. 百度地图实现车辆轨迹移动播放(baidu map api)

    开发技术:jquery,js baidu map api,json,ajax QQ1310651206

  8. Vue 自定义一个插件的用法、小案例及在项目中的应用

    1.开发插件 install有两个参数,第一个是Vue构造器,第二个参数是一个可选的选项对象   MyPlugin.install = function (Vue, options) {   // 1 ...

  9. vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单

    今天分享的不是技术,今天给大家分享个插件,针对现有的vue右键菜单插件,大多数都是需要使用插件本身自定义的标签,很多地方不方便,可扩展性也很低,所以我决定写了一款自定义指令调用右键菜单(vuerigh ...

随机推荐

  1. django 之manytomany

    https://www.cnblogs.com/changbaishan/p/8056762.html https://blog.csdn.net/hpu_yly_bj/article/details ...

  2. css-选择器性能

    ID选择器 比如#header 类选择器 比如.promo 元素选择器 比如 div 兄弟选择器 比如 h2 + p 子选择器 比如 li > ul 后代选择器 比如 ul a 7. 通用选择器 ...

  3. Python中的元类(译)

    add by zhj: 这是大stackoverflow上一位小白提出的问题,好吧,我承认我也是小白,元类这块我也是好多次想搞明白, 但终究因为太难懂而败下阵来.看了这篇文章明白了许多,再加下啄木鸟社 ...

  4. powerdesiner技巧

    1.name和code同步问题和name成comments http://blog.csdn.net/huang_xw/article/details/5722981 2.连接数据库

  5. eval解析字符串为JSON对象

    对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次. 这种方式也适合以普通j ...

  6. StarRatingBar星星切换动画《IT蓝豹》

    StarRatingBar星星切换动画 StarRatingBar星星切换动画,很久没有学习一下这个RatingBar了,今天来看看这个RatingBar的动画切换效果,本例子主要是RatingBar ...

  7. 吴裕雄 28-MySQL 序列使用

    MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现 使用AUTO_INCREMENTMySQ ...

  8. java批量向oracle插入数据

    由于项目需要,需要将一个6M的txt中的数据插入到oracle数据表中.txt中的数据是每行一个词.经过统计,词总数是505040.为了看起来方便,我将我的所有方法写在类入口中,数据库的信息我会用te ...

  9. SQL server 2012完全删除

    第一步,在控制面板里面找到程序——卸载程序这一项,打开之后就会是这样的了 第二步,经过第一步打开卸载程序后,在里面找到Microsoft SQLserver 2012 (64-bit)这一项,可以通过 ...

  10. springBoot入门文章

    https://www.javaworld.com/article/2078034/spring-framework/spring-framework-mastering-spring-mvc.htm ...