1. 什么是uniapp
UniApp是DCloud公司推出的一款基于Vue.js的多端应用开发框架,可实现一份代码,多端打包运行的开发方式。其中,最为重要的一点是UniApp支持微信小程序、H5、Android/iOS原生应用的开发,而且对于前端开发人员来说,只需要掌握一些基本的Vue.js知识即可开始开发UniApp应用。
2. 百度地图的接入方式
2.1 准备工作
在开始接入前,需要在百度地图开放平台申请开发者账号并创建应用,获取到AK(AccessKey)。
在应用中添加百度地图模块:
npm install baidu-map -S
在uniapp中的main.js文件中导入百度地图模块,并在Vue的原型中注入用于调用百度地图API的对象:
// main.js
import BaiduMap from 'baidu-map'
Vue.prototype.$baiduMap = BaiduMap
2.2 接入代码
在需要使用百度地图的页面中,可以通过v-if来判断是否已经加载完成,避免在百度地图未加载完成之前调用API接口:
<template>
<view>
<template v-if="isBMapReady">
<baidu-map style="width: 100%; height: 100%"
:center="centerPoint" :zoom="zoom" >
</baidu-map>
</template>
<template v-else>
<view>地图加载中...</view>
</template>
</view>
</template>
<script>
export default {
data() {
return {
isBMapReady: false, // 判断百度地图是否加载完成
}
},
computed: {
centerPoint() {
return { // 地图中心点的坐标
lng: 116.404,
lat: 39.915
}
},
zoom() {
return 17 // 地图缩放比例
}
},
mounted() {
this.initMap();
},
methods: {
initMap() {
const that = this;
const bmap = that.$refs.baiduMap; // 获取百度地图对象
bmap.init(() => { // 百度地图初始化完成后的回调函数
that.isBMapReady = true; // 百度地图加载完成
});
}
}
}
</script>
2.3 调用百度地图API
在uniapp中,调用百度地图API与调用普通接口一样简单。比如,要调用百度地图的地理编码接口获取某个地点的经纬度信息(该接口支持全国地区检索):
this.$baiduMap.geocoder({
address: '北京市海淀区上地信息路时代科技大厦'
}, (result) => {
if (result.status === 0) {
const point = result.geocodes[0].location;
console.log(point);
}
})
百度地图API提供了丰富的接口以满足地图相关的需求。
3. uniapp接入百度地图的注意事项
3.1 跨域问题
由于uniapp只能调用同域名下的接口,因此需要在服务端配置跨域请求。具体方法可参考这篇文章。
3.2 安全问题
在uniapp中,不能直接将AK等敏感信息写在前端代码中。推荐的做法是在服务端提供接口,将AK以及其他敏感信息返回前端,从而避免被他人恶意利用。
4. 总结
通过上述介绍,我们可以看出,uniapp集成百度地图并不复杂,只需进行简单的配置即可搭建地图应用。希望这篇文章能够对需要接入百度地图的开发人员提供一些帮助。