1. 前言
随着移动互联网的快速发展,地图成为了人们生活中不可缺少的一部分。而在移动app的开发中,百度地图开放平台是一个很好的选择。本文将介绍如何通过uniapp来创建百度地图。
2. 创建项目
首先,我们需要安装uni-app脚手架工具。在命令行中输入:
npm install -g @vue/cli
安装完成后,我们可以通过下面的命令来创建 uni-app 项目:
vue create -p dcloudio/uni-preset-vue my-project
其中,my-project 表示项目名称。
3. 引入百度地图 SDK
接下来,我们需要在项目中引入百度地图 SDK。我们可以通过百度开放平台来获取 AK(Access Key )。
获取 AK 后,我们需要创建一个 js 文件来引入百度地图 SDK。我们可以在项目的 static 目录下创建一个 bmap.js 文件,然后将以下代码复制进去:
export function loadBaiduMap (ak) {
return new Promise((resolve, reject) => {
if (typeof BMap !== 'undefined') {
resolve(BMap)
return true
}
window.onBMapCallback = function () {
resolve(BMap)
}
let script = document.createElement('script')
script.type = 'text/javascript'
const url =
'https://api.map.baidu.com/api?v=3.0&ak=' + ak + '&callback=onBMapCallback'
script.src = url
script.onerror = reject
document.head.appendChild(script)
})
}
在 main.js 中引入该 bmap.js 文件:
import { loadBaiduMap } from '@/static/utils/bmap.js'
const ak = 'your_ak'
loadBaiduMap(ak).then(() => {
console.log('load map success!')
}).catch(err => {
console.log('load map error:', err)
})
注意:在引入百度地图 SDK 时,最好使用 Promise 封装起来,这样可以保证在引入完成后再使用。
4. 创建百度地图组件
在创建完成项目并成功引入百度地图 SDK 后,我们就可以开始创建百度地图组件了。在 components 目录下创建一个名为 baidu-map 的组件,并在该组件的 vue 文件中编写代码:
<template>
<div class="map-container" :style="{width:width+'px',height:height+'px'}">
<div ref="baiduMap" class="baidu-map"></div>
</div>
</template>
<script>
export default {
name: 'BaiduMap',
props: {
width: {
type: Number,
default: 0
},
height: {
type: Number,
default: 0
}
},
data () {
return {
map: null
}
},
mounted () {
this.initMap()
},
methods: {
initMap () {
// 创建地图实例
const map = new BMap.Map(this.$refs.baiduMap)
// 初始化地图,设置中心点坐标和地图级别
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11)
// 启用拖拽和缩放
map.enableScrollWheelZoom(true)
this.map = map
}
}
}
</script>
该组件中包含一个 div 容器用来装载百度地图,同时利用 props 来传递容器的宽和高。通过 initMap 方法来初始化百度地图。参数 new BMap.Point(116.404, 39.915)表示地图初始化点的经纬度坐标,11 表示地图等级。启用缩放后,我们可以通过滚轮来缩放地图。
5. 展示百度地图
到这里,我们已经完成了百度地图的创建,现在可以展示地图了。在 App.vue 中暂时使用该组件,以便查看效果:
<template>
<div id="app">
<baidu-map :width="750" :height="1334" />
</div>
</template>
<script>
import BaiduMap from '@/components/baidu-map.vue'
export default {
name: 'App',
components: {
'baidu-map': BaiduMap
}
}
</script>
这样,我们就可以看到百度地图已经成功展示了。
6. 小结
这篇文章介绍了如何使用 uniapp 来创建百度地图,并展示在页面上。通过该文章,我们了解了百度地图 SDK 的引用、百度地图组件的创建,以及地图的展示。