支付宝小程序组件 地图·Map
支付宝小程序Map(地图)。
API
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
style | String | - | 内联样式 |
class | String | - | 样式名 |
longitude | Number | - | 中心经度 |
latitude | Number | - | 中心纬度 |
scale | Number | 16 | 缩放级别,范围为5 ~ 18 |
markers | Array | - | 标记点 |
polyline | Array | - | 路线 |
circles | Array | - | 圆 |
controls | Array | - | 控件 |
polygon | Array | - | 多边形 |
include-points | Array | - | 缩放视野以包含所有给定的坐标点 |
show-location | Boolean | - | 是否显示带有方向的当前定位点 |
onMarkerTap | EventHandle | - | 点击标记点时触发 |
onCalloutTap | EventHandle | - | 点击标记点对应的气泡时触发 |
onControlTap | EventHandle | - | 点击控件时触发 |
onRegionChange | EventHandle | - | 视野发生变化时触发,{type: "begin" / "end", latitude,longitude, scale} |
onTap | EventHandle | - | 点击地图时触发 |
markers
标记点,用于在地图上显示标记的位置。
属性名 | 说明 | 类型 | 必填 | 备注 |
---|---|---|---|---|
id | 标记点id | Number | 否 | 标记点 id,点击事件回调会返回此 id |
latitude | 纬度 | Float | 是 | 范围 -90 ~ 90 |
longitude | 经度 | Float | 是 | 范围 -180 ~ 180 |
title | 标注点名 | String | 否 | - |
iconPath | 显示的图标 | String | 是 | 项目目录下的图片路径,可以用相对路径写法,以'/'开头则表示相对小程序根目录 |
rotate | 旋转角度 | Number | 否 | 顺时针旋转的角度,范围 0 ~ 360,默认为 0 |
alpha | 标注的透明度 | Number | 否 | 是否透明,默认为 1 |
width | 标注图标宽度 | Number | 否 | 默认为图片的实际宽度 |
height | 标注图标高度 | Number | 否 | 默认为图片的实际高度 |
callout | 自定义标记点上方的气泡窗口 | Object | 否 | {content} |
anchor | 经纬度在标注图标的锚点,默认底边中点 | Object | 否 | {x, y},x表示横向(0-1),y表示竖向(0-1),{x: .5, y: 1} 表示底边中点 |
polygon
用于构造多边形对象
属性名 | 说明 | 类型 | 必填 | 备注 |
---|---|---|---|---|
points | 经纬度数组 | Array | 是 | [{latitude: 0, longitude: 0}] |
color | 线的颜色 | String | 否 | 用 8 位十六进制表示,后两位表示 alpha 值,如:#eeeeeeAA |
fillColor | 填充色 | String | 否 | 用 8 位十六进制表示,后两位表示 alpha 值,如:#eeeeeeAA |
width | 线的宽度 | Number | 否 | - |
polyline
用于指定一系列坐标点,从数组第一项连线至最后一项
属性名 | 说明 | 类型 | 必填 | 备注 |
---|---|---|---|---|
points | 经纬度数组 | Array | 是 | [{latitude: 0, longitude: 0}] |
color | 线的颜色 | String | 否 | 用 8 位十六进制表示,后两位表示 alpha 值,如:#eeeeeeAA |
width | 线的宽度 | Number | 否 | - |
dottedLine | 是否虚线 | Boolean | 否 | 默认 false |
circles
用于在地图上显示圆
属性名 | 说明 | 类型 | 必填 | 备注 |
---|---|---|---|---|
latitude | 纬度 | Float | 是 | 范围 -90 ~ 90 |
longitude | 经度 | Float | 是 | 范围 -180 ~ 180 |
color | 描边的颜色 | String | 否 | 用 8 位十六进制表示,后两位表示 alpha 值,如:#eeeeeeAA |
fillColor | 填充颜色 | String | 否 | 用 8 位十六进制表示,后两位表示 alpha 值,如:#eeeeeeAA |
radius | 半径 | Number | 是 | - |
strokeWidth | 描边的宽度 | Number | 否 | - |
controls
用于在地图上显示控件,控件不随着地图移动
属性名 | 说明 | 类型 | 必填 | 备注 |
---|---|---|---|---|
id | 控件id | Number | 否 | 控件 id,点击事件回调会返回此 id |
position | 控件在地图的位置 | Object | 是 | 相对地图位置 |
iconPath | 显示的图标 | String | 是 | 项目目录下的图片路径,可以用相对路径写法,以'/'开头则表示相对小程序根目录 |
clickable | 是否可点击 | Boolean | 否 | 默认为false |
position
属性名 | 说明 | 类型 | 必填 | 备注 |
---|---|---|---|---|
left | 距离地图的左边界多远 | Number | 否 | 默认为0 |
top | 距离地图的上边界多远 | Number | 否 | 默认为0 |
width | 控件宽度 | Number | 否 | 默认为图片宽度 |
height | 控件高度 | Number | 否 | 默认为图片高度 |
地图组件的经纬度是必填的, 如果不填经纬度默认是北京的经纬度。
Screenshot
示例
Page({
data: {
scale: 14,
longitude: 120.131441,
latitude: 30.279383,
markers: [{
iconPath: "/image/green_tri.png",
id: 10,
latitude: 30.279383,
longitude: 120.131441,
width: 50,
height: 50
}],
includePoints: [{
latitude: 30.279383,
longitude: 120.131441,
}],
polyline: [{
points: [{
longitude: 120.131441,
latitude: 30.279383
}, {
longitude: 120.128821,
latitude: 30.278200
}, {
longitude: 120.131618,
latitude: 30.277600
}, {
longitude: 120.132520,
latitude: 30.279393
}, {
longitude: 120.137517,
latitude: 30.279383
}],
color: "#FF0000DD",
width: 5,
dottedLine: false
}],
circles: [{
latitude: 30.279383,
longitude: 120.131441,
color: "#000000AA",
fillColor: "#000000AA",
radius: 80,
strokeWidth: 5,
}],
controls: [{
id: 5,
iconPath: '../../resources/pic/2.jpg',
position: {
left: 0,
top: 300 - 50,
width: 50,
height: 50
},
clickable: true
}]
},
onReady(e) {
// 使用 my.createMapContext 获取 map 上下文
this.mapCtx = my.createMapContext('map')
},
getCenterLocation() {
this.mapCtx.getCenterLocation(function (res) {
console.log(res.longitude)
console.log(res.latitude)
})
},
moveToLocation() {
this.mapCtx.moveToLocation()
},
regionchange(e) {
console.log('regionchange', e);
// 注意:如果缩小或者放大了地图比例尺以后,请在 onRegionChange 函数中重新设置 data 的
// scale 值,否则会出现拖动地图区域后,重新加载导致地图比例尺又变回缩放前的大小。
if (e.type === 'end') {
this.setData({
scale: e.scale
});
}
},
markertap(e) {
console.log('marker tap', e);
},
controltap(e) {
console.log('control tap', e);
},
tap() {
console.log('tap:');
},
changeScale() {
this.setData({
scale: 8,
});
},
changeCenter() {
this.setData({
longitude: 113.324520,
latitude: 23.199994,
includePoints: [{
latitude: 23.199994,
longitude: 113.324520,
}],
});
},
changeMarkers() {
this.setData({
markers: [{
iconPath: "/image/green_tri.png",
id: 10,
latitude: 21.21229,
longitude: 113.324520,
width: 50,
height: 50
}],
includePoints: [{
latitude: 21.21229,
longitude: 113.324520,
}],
});
},
})
Tips
-
map
组件是由客户端创建的原生组件,它的层级是最高的。 - 请勿在
scroll-view
中使用map
组件。 - css 动画对
map
组件无效。 - 如果缩小或者放大了地图比例尺以后,请在
onRegionChange
函数中重新设置data
的scale
值,否则会出现拖动地图区域后,重新加载导致地图比例尺又变回缩放前的大小,具体请参照上面的示例代码regionchange
函数部分。