详解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 相关文章推荐
cookie在javascript中的使用技巧以及隐私在服务器端的设置
Dec 03 Javascript
使用PHP+JQuery+Ajax分页的实现
Apr 23 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
Jun 30 Javascript
实现无刷新联动例子汇总
May 20 Javascript
JavaScript中的slice()方法使用详解
Jun 06 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
Aug 10 Javascript
ANGULARJS中使用JQUERY分页控件
Sep 16 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
Jul 07 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
jQuery中each遍历的三种方法实例分析
Sep 07 jQuery
jquery实现简单拖拽效果
Jul 20 jQuery
js实现前端界面导航栏下拉列表
Aug 27 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木马webshell扫描器代码
2012/01/25 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
BootStrap导航栏问题记录
2017/07/31 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
python3处理含有中文的url方法
2018/05/10 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
人事助理岗位职责
2013/11/18 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
请客吃饭开场白
2015/06/01 职场文书
学子宴致辞大全
2015/07/27 职场文书
Python实现视频自动打码的示例代码
2022/04/08 Python