如何在 Vue 中使用百度地图

中国互联网地图提供商我们估计就熟知三家:百度地图、高德地图、腾讯地图。三家提供的服务其实也感觉不出来有啥各自的特色,我上大学那会,手机里面默认安装的是百度地图,在合肥出去需要找路的时候就用百度的导航还是挺准的,后来到了大二看一些同学讲高德不错,而且几乎没人用百度地图,他们的手机以 vivo 和 OPPO 居多,估计和我的手机一样也是内置的,不管怎么样,我就去下了高德地图试试,诡异的是刚开始用的时候,从导航的精确度上来讲和百度地图没啥区别,但是没多久就发现,高德的导航老是会偏离目的地,可能和我的手机有关系。反正我也不经常出去,虽然高德导航不准但也用不了几次,就一直用着,不过最近更新出来个实时公交,嗯很不错。

来谈谈项目,一般来讲三家地图插件,想用哪个就用哪个,没啥太大的差别,用的时候注意你使用的啥框架,搜的时候就可以框架名: react + 高德地图插件,然后出来一个 react-amap。


Vue-baidu-map

使用框架分为三步:

  • 安装对应的插件
  • 注册成为开发者,得到一个秘钥
  • 组件使用
一、安装vue-baidu-map插件
npm install vue-baidu-map --save

vue-baidu-map手册
更加详细的API

二、申请开发者秘钥

申请开发者秘钥http://lbsyun.baidu.com/apiconsole/key


激活之后,在应用管理里面创建一个应用我们就会得到一个 ak。

三、使用
  • 全局注册
    全局注册将一次性引入百度地图组件库的所有组件。
//main.js
import Vue from 'vue'
import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {
  // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
  ak: 'YOUR_APP_KEY'
})
//组件内部
<template>
  <baidu-map class="bm-view" center="北京">
  </baidu-map>
</template>

<style>
.bm-view {
  width: 100%;
  height: 300px;
}
</style>
  • 局部注册
    如果有按需引入组件的需要,可以选择局部注册百度地图组件,这将减少工程打包后的容量尺寸。局部注册的 BaiduMap 组件必须声明 ak 属性。 所有的独立组件均存放在 vue-baidu-map/components 文件夹下,按需引用即可。 由于未编译的 ES 模块不能在大多数浏览器中直接运行,如果引入组件时发生运行时错误,请检查 webpack 的 loader 配置,确认 include 和 exclude 选项命中了组件库。
<template>
  <baidu-map class="bm-view" ak="YOUR_APP_KEY">
  </baidu-map>
</template>

<script>
import BaiduMap from 'vue-baidu-map/components/map/Map.vue'
export default {
  components: {
    BaiduMap
  }
}
</script>

<style>
.bm-view {
  width: 100%;
  height: 300px;
}
</style>

注意:

  1. BaiduMap 组件容器本身是一个空的块级元素,如果容器不定义高度,百度地图将渲染在一个高度为 0 不可见的容器内。
  2. 没有设置 center 和 zoom 属性的地图组件是不进行地图渲染的。当center 属性为合法地名字符串时例外,因为百度地图会根据地名自动调整 zoom 的值。


    放置地图成功
三、个性化配置

首先我们去具体的地点,就比如讲是:中央戏剧学院昌平校区,去这个地址查询下具体的经纬度:http://api.map.baidu.com/lbsapi/getpoint/index.html

中央戏剧学院昌平校区

如果 center 使用经纬度我们必须制定 zoom 地图展示级别,不然地图不显示:

<baidu-map :center="{lng:116.382337,lat:40.110602}"  :zoom="17" class="bm-view"></baidu-map>


:scroll-wheel-zoom="true"//鼠标滚动控制缩放,来看个综合案例:

演示源代码:

<baidu-map
:scroll-wheel-zoom="true"
:center="{lng:116.382337,lat:40.110602}" :zoom="17" class="bm-view">
    <bm-marker
    :position="{lng:116.382337,lat:40.110602}"
    animation="BMAP_ANIMATION_BOUNCE"
    title="鼠标移到marker上的显示内容"
    >
        <bm-label content="我爱中戏的小姐姐"
        :labelStyle="{color: 'red', fontSize : '24px'}"
        :offset="{width: -70, height: 50}"/>
    </bm-marker>
    <bm-marker
    :position="{lng:116.381659,lat:40.114876}"
    :dragging="true"
    :offset="{width: 0, height: -50}"
    animation="BMAP_ANIMATION_BOUNCE"
    :icon="{url: 'http://developer.baidu.com/map/jsdemo/img/fox.gif', size: {width: 300, height: 157}}"
    >
    </bm-marker>
    <bm-marker
    :position="{lng:116.378601,lat:40.11361}"
        @click="show=true"
    >
            <bm-info-window :show="show" @close="show!=show" @open="show!=show">我爱北京</bm-info-window>
    </bm-marker>
</baidu-map>

在来看一个例子:


<baidu-map
:scroll-wheel-zoom="true"
:center="{lng:116.382337,lat:40.110602}" :zoom="17" class="bm-view">
    <bm-marker
    :position="{lng:116.382337,lat:40.110602}"
    animation="BMAP_ANIMATION_BOUNCE"
    title="鼠标移到marker上的显示内容"
    >
        <bm-scale anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-scale>
        <!-- 比例尺控件 -->
        <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT" enableGeolocation></bm-navigation>
        <!-- 缩放控件 -->
        <bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']" anchor="BMAP_ANCHOR_TOP_LEFT"></bm-map-type>
        <!-- 在地图左上角加入地图类型控件 -->
        <bm-overview-map anchor="BMAP_ANCHOR_BOTTOM_LEFT" :isOpen="true"></bm-overview-map>
        <!-- 在地图右下角加入缩略图控件 -->
        <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true"></bm-geolocation>
        <!-- 在地图右下角加入定位控件 -->
        <!-- <bm-panorama></bm-panorama> -->
        <!-- 插入全景控件 -->
    </bm-marker>
</baidu-map>

除了这些估计常见的还有个路线图,官网上都有,几乎不要动手敲代码直接复制粘贴就行了。

另外赠送一片文章魔改Chrome的小恐龙游戏:变无敌、999倍速,还能变成马里奥……

作为前端断情况下你一定在谷歌浏览器见到一个小恐龙:


没事你敲敲空格就能让小恐龙跑起来了。现在只要在地址栏输入 chrome://dino,就可以全屏玩。如果你不想死的话,就可以打开控制台输入一下内容:

const game = window.Runner();
game.gameOver = ()=>{};

让小恐龙加速:

Runner.instance_.setSpeed(100);

小恐龙改成马里奥游戏:
审查元素进行替换:



马里奥的图片:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容