Vue Baidu Map 插件的使用
最近在做一个项目,技术采用的是Vue.js套餐,有个百度地图的需求,当时,大脑宕机,立马去引入百度地图API,当时想到两种方法,一种是在index.html中全局引入js,此法吾不喜,就采用了第二种异步加载jsonp的方式,细节无关本文,暂且不提。噼里啪啦~噼里啪啦~ 代码一气呵成,本地测试完,立马上服务器测试,what ??? 什么鬼 ? 进入界面后,我的地图呢??地图呢??回看代码,代码中有一行window.onload = loadScript,呃~呃~呃~,vue中界面跳转不会触发这个, 欧德科 ??? 坑爹啊~ 有木有??然后立马百度进行搜索,此时眼前一亮,嘻嘻嘻~,我看到了什么??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 插件的使用的更多相关文章
- vue Baidu Map --- vue百度地图插件
vue Baidu Map 官网:https://dafrok.github.io/vue-baidu-map/#/zh/start/installation javascript 官网:http:/ ...
- vue2.0之Vue Baidu Map 局部注册使用
文档地址:https://dafrok.github.io/vue-baidu-map/#/zh/start/usage 局部注册 <template> <baidu-map id= ...
- 使用Vue Baidu Map对百度地图实现输入框搜索定位
前端时间需要在页面的输入框输入地址,搜索并在百度地图上获取选定结果的坐标,前端使用了Vue + Element-ui,地图方面直接使用了封装好的百度地图vue组件-vue-baidu-map ...
- Vue Baidu Map局部注册实现和地图绘点
需求:在vue项目中,实现用户选择地图绘点或者通过搜索关键字选点 <template> <div id="home"> <h2>首页地图< ...
- Add baidu map in your website (wordpress)
手动挡 访问应用(AK)Key http://lbsyun.baidu.com/apiconsole/key Basic Map Generator http://api.map.baidu.com/ ...
- 提高Baidu Map聚合的效率
百度的MAP的例子里提供了一个聚合效果,地址是http://developer.baidu.com/map/jsdemo.htm#c1_4 ,效果图如下图: 这个效果很赞,但效率很低,当数据量达到50 ...
- 百度地图实现车辆轨迹移动播放(baidu map api)
开发技术:jquery,js baidu map api,json,ajax QQ1310651206
- Vue 自定义一个插件的用法、小案例及在项目中的应用
1.开发插件 install有两个参数,第一个是Vue构造器,第二个参数是一个可选的选项对象 MyPlugin.install = function (Vue, options) { // 1 ...
- vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
今天分享的不是技术,今天给大家分享个插件,针对现有的vue右键菜单插件,大多数都是需要使用插件本身自定义的标签,很多地方不方便,可扩展性也很低,所以我决定写了一款自定义指令调用右键菜单(vuerigh ...
随机推荐
- 解决 shopnc b2b2c 版权问题 修改路经ULR及目录文件夹思路及教程
相信各位使用过NC的朋友,多多少少收到过律师函,把一堆人吓尿了,原因你使用了盗版,大哥都要吃饭可以理解#网络那么大,他怎么能快速定位到您的,原因很简单 搜索引擎,NC在开发中定义了URL路由规则,在百 ...
- js修改table中Td的值(定义td的单击事件)
/* 页面装载时,为每个td增加单击事件,这样,就可以不用对每个页面进行更改. 添加单击事件属性.此处不可使用setAttribute方法. */ onclick=AddObjOfText; 单击事件 ...
- pycharm添加版本控制
- Haskell语言学习笔记(79)lambda演算
lambda演算 根据维基百科,lambda演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义.函数如何被应用以 ...
- 【370】Python列表生成式(for 写入一行)
参考: python用列表生成式写嵌套循环的方法_python_脚本之家 参考: python之列表生成式 - 旷野足迹 - 博客园 对于读取Twitter数据最终会得到一个超级复杂的json文件, ...
- 【365】拉格朗日乘子法与KKT条件说明
参考:知乎回答 - 通过山头形象描述 参考:马同学 - 如何理解拉格朗日乘子法? 参考: 马同学 - 如何理解拉格朗日乘子法和KKT条件? 参考:拉格朗日乘数 - Wikipedia 自己总结的规律 ...
- [福大2018高级软工教学]团队Alpha阶段成绩汇总
一.作业地址: https://edu.cnblogs.com/campus/fzu/AdvancedSoftwareEngineerning2018/homework/2396 https://ed ...
- ztree根据treeId展开指定节点并触发单击事件
ztree.expandNode(ztree.getNodeByParam("id",treeId,null));//展开指定节点 ztree.selectNode(ztree.g ...
- Jupter 7个进阶功能
1. 执行shell命令 Shell是一种与计算机进行文本交互的方式. 一般来讲,当你正在使用Python编译器,需要用到命令行工具的时候,要在shell和IDLE之间进行切换. 但是,如果你用的是 ...
- ABAP 字符串函数
CONCATENATE:合并字符串. CONCATENATE f1 … fn INTO g [SEPARATED BY h]. 1 * CONCATENATE合并字符串 2 DATA: c1(10) ...