最近在做一个项目,技术采用的是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. TFrame bug

    delphi 10.1.2 工程里有很多fram 正确的工程文件dproj中fram的定义是 <DCCReference Include="Unit15frame.pas"& ...

  2. delphi 连接DBF

    delphi 连接DBF 使用 DBF 文件时,文件夹表示数据库,单个 DBF 文件表示表 1.BDE,已淘汰 table1.Databasename:=dbdir;//设置库路径table1.Tab ...

  3. VirtualBox安装增强工具方法

    1.http://blog.csdn.net/wuliowen/article/details/71541561 2.https://segmentfault.com/a/11900000062335 ...

  4. spring-mvc.xml与spring-mybatis.xml配置文件中命名空间问题

    首先贴出配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

  5. Xcode 新建bundle id不同的且app图标也不同的新的target的步骤

    方法一: duplicate一个target 修改target配置文件中的bundle id,app icon图标文件位置(必要时重命名app icon文件名),plist文件位置,entitleme ...

  6. newCachedThreadPool使用案例

    newCachedThreadPool 缓存默认60s 猜下你的结果 package com.juc.threadpool; import java.util.concurrent.ExecutorS ...

  7. 大批量数据导出到Excel的实现

    在平时的项目中,将数据导出到Excel的需求是很常见的,在此对一些常见的方法做以总结,并提供一种大数据量导出的实现. OLEDB   使用OLEDB可以很方便导出Excel,思路很简单,处理时将Exc ...

  8. 向SqlParameter内动态添加参数

    动态向SqlParameter 里添加相应参数,方法如下 先定义一个List,然后再往List里面添加SqlParameter对象,然后将List转为SqlParameter数组即可 List< ...

  9. js数组方法解析

    js 数组有很多方法,其中有的常用,有的不常用,归纳几个常用的方法,做个总结: 1. 转换方法: 1.1 valueOf():调用这个方法会返回数组本身 <script> var arr ...

  10. 17.泛型.md

    目录 1.Generic概念 2.泛型类 2.1定义泛型类 定义泛型: 注意要点 2.2泛型类的继承 2.3类型通配符 2.4设置类型形参上下限 上限 下限 2.5泛型接口 定义方法 注意要点 3.泛 ...