详解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 相关文章推荐
jQuery Ajax之$.get()方法和$.post()方法
Oct 12 Javascript
js setTimeout opener的用法示例详解
Oct 23 Javascript
jQuery简单实现禁用右键菜单
Mar 10 Javascript
javascript html5摇一摇功能的实现
Apr 19 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 Javascript
详解RequireJS按需加载样式文件
Apr 12 Javascript
Angular 4环境准备与Angular cli创建项目详解
May 27 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
详解小程序input框失焦事件在提交事件前的处理
May 05 Javascript
Vue.js 中的实用工具方法【推荐】
Jul 04 Javascript
javascript面向对象三大特征之封装实例详解
Jul 24 Javascript
vue 实现图片懒加载功能
Dec 31 Vue.js
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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
php简单实现MVC
2015/02/05 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
python基于socket实现网络广播的方法
2015/04/29 Python
python实现爬虫下载美女图片
2015/07/14 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Python延时操作实现方法示例
2018/08/14 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
幼儿园消防演练方案
2014/02/13 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
Linux中文件的基本属性介绍
2022/06/01 Servers