详解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 相关文章推荐
XML的代替者----JSON
Jul 21 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
May 07 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
Dec 01 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
May 02 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
Nov 23 Javascript
js动态生成form 并用ajax方式提交的实现方法
Sep 09 Javascript
基于JavaScript实现购物车功能
Feb 07 Javascript
vue加载完成后的回调函数方法
Sep 07 Javascript
微信小程序自定义支持图片的弹窗
Dec 21 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
Oct 24 Javascript
如何通过简单的代码描述Angular父组件、子组件传值
Apr 07 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
多文件上传的例子
2006/10/09 PHP
PHP+ajax 无刷新删除数据
2010/02/20 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
jQuery select控制插件
2009/08/17 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
2018/02/02 jQuery
简单了解JavaScript异步
2019/05/23 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
python使用turtle库与random库绘制雪花
2018/06/22 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
初二生物教学反思
2014/02/03 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
兴趣班停课通知
2015/04/24 职场文书
七年级英语教学反思
2016/02/15 职场文书
Django程序的优化技巧
2021/04/29 Python
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js