1. 简介
uniApp作为一款跨平台框架,可以编写一份代码,发布到多个平台,其中包含了对高德地图的集成。通过uniMap组件和高德地图JavaScript API的结合,可以实现地图相关的功能。
2. 集成高德地图
2.1. 获取高德Key
集成高德地图需要申请高德Key,详情可以参考高德地图官网。申请成功后,需要将Key配置到uni-app的manifest.json文件中,如下:
{
"app": {
"key": "your app key",
"plugins": {
"myPlugin": {
"version": "1.0.0",
"provider": "uni-app"
}
}
}
}
以及在pages.json文件中引用高德地图组件:
"usingComponents": {
"uniMap": "@dcloudio/uni-map"
}
2.2. 引入高德地图JS API
uni-app默认没有引入高德地图JS API,需要手动引入。可以在static目录下创建一个js文件夹,将高德地图JS API下载到该文件夹中。然后在需要使用地图的页面的vue文件中引入:
import { Map } from '../../static/js/amap-wx.js';
其中,amap-wx.js是高德地图JS API的文件名,根据实际情况修改即可。
3. 基本使用
3.1. 显示地图
在页面中添加uniMap组件,并设置宽度和高度即可显示地图:
<template>
<view>
<uniMap :latitude="latitude" :longitude="longitude" :markers="markers" :covers="covers" :polyline="polyline" :circles="circles" style="width: 100%; height: 300px;"></uniMap>
</view>
</template>
其中,latitude和longitude是地图的中心点经纬度。markers、covers、polyline和circles分别表示地图上的标记、覆盖物、折线和圆等。
3.2. 获取用户位置
可以使用uni.getLocation方法获取用户位置信息:
uni.getLocation({
type: 'gcj02',
success: res => {
this.latitude = res.latitude;
this.longitude = res.longitude;
},
fail: error => {
uni.showToast({
title: '获取位置信息失败',
icon: 'none'
});
}
});
其中,type表示定位类型,gcj02是国家测绘局标准,返回的是加密后的坐标信息。
3.3. 添加标记
可以使用markers属性在地图上添加标记:
this.markers = [{
id: 1,
latitude: this.latitude,
longitude: this.longitude,
title: '我的位置',
iconPath: '/static/images/location.png',
width: 20,
height: 20,
callout: {
content: '这是我的位置',
fontSize: 14,
bgColor: '#ffffff',
padding: 10,
borderRadius: 10,
display: 'ALWAYS'
}
}];
其中,id是标记的唯一标识,latitude和longitude是标记的经纬度,title是标记的标题,iconPath是标记的图标路径,width和height是图标的尺寸,callout表示标记的气泡,其中content是气泡的内容,fontSize是字体大小,bgColor是背景色,padding是内边距,borderRadius是边框圆角,display表示气泡的显示策略。
3.4. 添加覆盖物
可以使用covers属性在地图上添加覆盖物:
this.covers = [{
id: 2,
latitude: this.latitude + 0.01,
longitude: this.longitude,
iconPath: '/static/images/circle.png',
rotate: 0,
alpha: 0.8,
width: 50,
height: 50
}];
其中,id是覆盖物的唯一标识,latitude和longitude是覆盖物的经纬度,iconPath是覆盖物的图标路径,rotate是旋转角度,alpha是透明度,width和height是尺寸。
3.5. 添加折线
可以使用polyline属性在地图上添加折线:
this.polyline = [{
points: [{
latitude: this.latitude,
longitude: this.longitude
},
{
latitude: this.latitude + 0.01,
longitude: this.longitude + 0.01
}
],
color: '#ff0000',
width: 5,
dottedLine: true,
arrowLine: true,
borderColor: '#0000ff'
}];
其中,points是折线的坐标点,color是颜色,width是宽度,dottedLine表示是否虚线,arrowLine表示是否带箭头,borderColor表示边框颜色。
3.6. 添加圆
可以使用circles属性在地图上添加圆:
this.circles = [{
latitude: this.latitude,
longitude: this.longitude,
radius: 1000,
color: '#00ff00',
fillColor: '#00ff00',
strokeWidth: 2
}];
其中,latitude和longitude是圆心坐标,radius是半径,color是边框颜色,fillColor是填充颜色,strokeWidth是边框宽度。
4. 结语
通过uni-app和高德地图的结合,可以很方便地实现地图相关的功能,包括显示地图、获取用户位置、添加标记、覆盖物、折线和圆等。我们可以根据实际需求,选择相应的API进行开发。