详解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获取网页中的js、css、Flash等文件
Dec 20 Javascript
JS字符串函数扩展代码
Sep 13 Javascript
json字符串之间的相互转换示例代码
Aug 21 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
jquery ztree实现模糊搜索功能
Feb 25 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
seajs学习教程之基础篇
Oct 20 Javascript
Vue2.x中的父子组件相互通信的实现方法
May 02 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
node.js遍历目录的方法示例
Aug 01 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中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
Python中生成ndarray实例讲解
2021/02/22 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
院领导写的就业推荐信
2014/03/09 职场文书
C++程序员求职信范文
2014/04/14 职场文书
2014年会计工作总结
2014/11/27 职场文书
个人借条范本
2015/05/25 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
MySQL数据库查询之多表查询总结
2022/08/05 MySQL