vue.js下引入百度舆图jsApi的两种要领
媒介
今天有个项目须要用到百度舆图,平常我们在挪动端运用百度舆图,都是直接经由过程如许的体式格局,直接引入百度舆图的jsApi。
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak="></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…]
React:[https://github.com/huiyan-fe/…]
可参考它们在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>