详解vue.js下引入百度地图jsApi的两种方法


Posted in Javascript onJuly 27, 2018

前言

今天有个项目需要用到百度地图,一般我们在移动端使用百度地图,都是直接通过这样的方式,直接引入百度地图的jsApi。

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=D9b45bc6f98deafc489e9ac1bc7f7612"></script>

这种方法的原理,就是直接给全局widow对象添加一个BMap对象,从而可以使我们在已经加载api的页面的任何地方,使用百度地图的api。但是单单通过引入的方法,对于使用单文件组件的vue+webpack开发的项目,显然是不够的。于是,通过网上查资料。这里找到了两种方法。

直接引入script标签

第一种方法是通过直接引入的方法,当然除了引入script标签还不够,要想在vue文件中使用bmap对象,还需要在webpack的配置文件中,设置外部扩展(externals属性)

//webpack.dev.conf.js

externals: {
  'BaiduMap': 'BMap'
}

externales属性来自官方的解释是:

防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖(external dependencies)。

webpack文档也给出了一个示例:从 CDN 引入 jQuery,而不是把它打包。

index.html

<script
 src="https://code.jquery.com/jquery-3.1.0.js"
 integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk="
 crossorigin="anonymous">
</script>

webpack.config.js

externals: {
 jquery: 'jQuery'
}
import $ from 'jquery';

$('.my-element').animate(...);

参考这个实例,我们就可以在我们的项目中通过引入js文件的方法,直接使用百度地图的api。

import BaiduMap from 'BaiduMap'
export default {
  name: 'Index',
  .....
mounted() {
    
  var map = new BaiduMap.Map('allmap')            // 创建地图实例
  var point = new BaiduMap.Point(120.343373,31.540212)    // 创建中心点坐标
  var marker = new BaiduMap.Marker(point) // 创建标注

  map.centerAndZoom(point,15)             // 初始化地图,设置中心点坐标和地图级别


  map.addOverlay(marker) // 将标注添加到地图中

}

注意这里,实例化地图api,最好要在mounted阶段进行,如果你的dom中采用的是官方的示例如

<div id="allmap"></div>

因为只有在mounted的阶段,dom才会生成并挂载。

通过模块化引入的方法

实际上百度地图官方去年已经开源了基于jsApi的vue和react的对应开源组件,我们可以直接通过npm安装,然后使用。

VUE:https://github.com/Dafrok/vue-baidu-map

React: https://github.com/huiyan-fe/react-bmap

可参考它们在github上面的文档进行使用。这里只介绍下vue的。

安装

npm i vue-baidu-map --save

初始化

import Vue from 'vue'
import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {
 ak: 'YOUR_APP_KEY'  //这个地方是官方提供的ak密钥
})

使用

<template>
 <baidu-map class="map">
 </baidu-map>
</template>

<style>
/* The container of BaiduMap must be set width & height. */
.map {
 width: 100%;
 height: 300px;
}
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript Object与Function使用
Jan 11 Javascript
javascript一些实用技巧小结
Mar 18 Javascript
node.js使用nodemailer发送邮件实例
Mar 10 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
Feb 05 Javascript
Node.js操作Firebird数据库教程
Mar 04 Javascript
JavaScript利用fetch实现异步请求的方法实例
Jul 26 Javascript
laydate 显示结束时间不小于开始时间的实例
Aug 11 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
Aug 16 Javascript
浅析Vue.js中v-bind v-model的使用和区别
Dec 04 Javascript
基于vue实现一个禅道主页拖拽效果
May 27 Javascript
微信小程序swiper左右扩展各显示一半代码实例
Dec 05 Javascript
JSONP 的原理、理解 与 实例分析
May 16 Javascript
JavaScript中为事件指定处理程序的五种方式分析
Jul 27 #Javascript
浅谈Redux中间件的实践
Jul 27 #Javascript
JavaScript多态与封装实例分析
Jul 27 #Javascript
Vue配合iView实现省市二级联动的示例代码
Jul 27 #Javascript
react native 文字轮播的实现示例
Jul 27 #Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
Jul 27 #Javascript
浅析Vue项目中使用keep-Alive步骤
Jul 27 #Javascript
You might like
php addslashes 函数详细分析说明
2009/06/23 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
python十进制转二进制的详解
2020/02/07 Python
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
Overload和Override的区别
2012/09/02 面试题
中专自荐信
2013/10/13 职场文书
应届毕业生自荐书
2014/06/18 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
员工工作自我评价
2014/09/26 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
中标通知书
2015/04/17 职场文书
元旦晚会开场白
2015/05/29 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
Python采集壁纸并实现炫轮播
2022/04/30 Python