map

基础库 1.0.0 开始支持,低版本需做兼容处理

地图(v2.7.0 起支持同层渲染)。相关api wx.createMapContext

个性化地图能力可在小程序后台“开发-开发者工具-腾讯位置服务”申请开通,详见《微信小程序解决方案》。 小程序内地图组件应使用同一 subkey,可通过 layer-style(地图官网设置的样式 style 编号)属性选择不同的底图风格。 组件属性的长度单位默认为px,2.4.0起支持传入单位(rpx/px)。

示例小程序

map - 图1

属性类型默认值必填说明最低版本
longitudenumber中心经度1.0.0
latitudenumber中心纬度1.0.0
scalenumber16缩放级别,取值范围为3-201.0.0
min-scalenumber3最小缩放级别2.13.0
max-scalenumber20最大缩放级别2.13.0
markersArray.<marker>标记点1.0.0
coversArray.<cover>即将移除,请使用 markers1.0.0
polylineArray.<polyline>路线1.0.0
circlesArray.<circle>1.0.0
controlsArray.<control>控件(即将废弃,建议使用 cover-view 代替)1.0.0
include-pointsArray.<point>缩放视野以包含所有给定的坐标点1.0.0
show-locationbooleanfalse显示带有方向的当前定位点1.0.0
polygonsArray.<polygon>多边形2.3.0
subkeystring个性化地图使用的key2.3.0
layer-stylenumber1个性化地图配置的 style,不支持动态修改
rotatenumber0旋转角度,范围 0 ~ 360, 地图正北和设备 y 轴角度的夹角2.5.0
skewnumber0倾斜角度,范围 0 ~ 40 , 关于 z 轴的倾角2.5.0
enable-3Dbooleanfalse展示3D楼块(工具暂不支持)2.3.0
show-compassbooleanfalse显示指南针2.3.0
show-scalebooleanfalse显示比例尺,工具暂不支持2.8.0
enable-overlookingbooleanfalse开启俯视2.3.0
enable-zoombooleantrue是否支持缩放2.3.0
enable-scrollbooleantrue是否支持拖动2.3.0
enable-rotatebooleanfalse是否支持旋转2.3.0
enable-satellitebooleanfalse是否开启卫星图2.7.0
enable-trafficbooleanfalse是否开启实时路况2.7.0
enable-poiboolean是否展示 POI 点2.14.0
enable-buildingboolean是否展示建筑物2.14.0
settingobject配置项2.8.2
bindtapeventhandle点击地图时触发,2.9.0起返回经纬度信息1.0.0
bindmarkertapeventhandle点击标记点时触发,e.detail = {markerId}1.0.0
bindlabeltapeventhandle点击label时触发,e.detail = {markerId}2.9.0
bindcontroltapeventhandle点击控件时触发,e.detail = {controlId}1.0.0
bindcallouttapeventhandle点击标记点对应的气泡时触发e.detail = {markerId}1.2.0
bindupdatedeventhandle在地图渲染更新完成时触发1.6.0
bindregionchangeeventhandle视野发生变化时触发,2.3.0
bindpoitapeventhandle点击地图poi点时触发,e.detail = {name, longitude, latitude}2.3.0
bindanchorpointtapeventhandle点击定位标时触发,e.detail = {longitude, latitude}2.13.0

regionchange 返回值

视野改变时,regionchange 会触发两次,返回的 type 值分别为 begin 和 end。

2.8.0 起 begin 阶段返回 causedBy,有效值为 gesture(手势触发) & update(接口触发)

2.3.0 起 end 阶段返回 causedBy,有效值为 drag(拖动导致)、scale(缩放导致)、update(调用更新接口导致)。

  1. e = {causedBy, type, detail: {rotate, skew, scale, centerLocation, region}}

setting

提供 setting 对象统一设置地图配置。同时对于一些动画属性如 rotateskew,通过 setData 分开设置时无法同时生效,需通过 settting 统一修改。

  1. // 默认值
  2. const setting = {
  3. skew: 0,
  4. rotate: 0,
  5. showLocation: false,
  6. showScale: false,
  7. subKey: '',
  8. layerStyle: 1,
  9. enableZoom: true,
  10. enableScroll: true,
  11. enableRotate: false,
  12. showCompass: false,
  13. enable3D: false,
  14. enableOverlooking: false,
  15. enableSatellite: false,
  16. enableTraffic: false,
  17. }
  18. this.setData({
  19. // 仅设置的属性会生效,其它的不受影响
  20. setting: {
  21. enable3D: true,
  22. enableTraffic: true
  23. }
  24. })

marker

标记点用于在地图上显示标记的位置

属性说明类型必填备注最低版本
id标记点 idnumbermarker 点击事件回调会返回此 id。建议为每个 marker 设置上 number 类型 id,保证更新 marker 时有更好的性能。
clusterId聚合簇的 idNumber自定义点聚合簇效果时使用
joinCluster是否参与点聚合Boolean默认不参与点聚合
latitude纬度number浮点数,范围 -90 ~ 90
longitude经度number浮点数,范围 -180 ~ 180
title标注点名string点击时显示,callout存在时将被忽略
zIndex显示层级number2.3.0
iconPath显示的图标string项目目录下的图片路径,支持网络路径、本地路径、代码包路径(2.3.0
rotate旋转角度number顺时针旋转的角度,范围 0 ~ 360,默认为 0
alpha标注的透明度number默认 1,无透明,范围 0 ~ 1
width标注图标宽度number/string默认为图片实际宽度
height标注图标高度number/string默认为图片实际高度
callout标记点上方的气泡窗口Object支持的属性见下表,可识别换行符。1.2.0
customCallout自定义气泡窗口Object支持的属性见下表
label为标记点旁边增加标签Object支持的属性见下表,可识别换行符。1.2.0
anchor经纬度在标注图标的锚点,默认底边中点Object{x, y},x 表示横向(0-1),y 表示竖向(0-1)。{x: .5, y: 1} 表示底边中点1.2.0
aria-label无障碍访问,(属性)元素的额外描述string2.5.0

marker 上的气泡 callout

属性说明类型最低版本
content文本string1.2.0
color文本颜色string1.2.0
fontSize文字大小number1.2.0
borderRadius边框圆角number1.2.0
borderWidth边框宽度number2.3.0
borderColor边框颜色string2.3.0
bgColor背景色string1.2.0
padding文本边缘留白number1.2.0
display‘BYCLICK’:点击显示; ‘ALWAYS’:常显string1.2.0
textAlign文本对齐方式。有效值: left, right, centerstring1.6.0
anchorX横向偏移量,向右为正数number2.11.0
anchorY纵向偏移量,向下为正数number2.11.0

marker 上的自定义气泡 customCallout

customCallout 存在时将忽略 callouttitle 属性。自定义气泡采用采用 cover-view 定制,灵活度更高。

属性说明类型最低版本
display‘BYCLICK’:点击显示; ‘ALWAYS’:常显string2.12.0
anchorX横向偏移量,向右为正数number2.12.0
anchorY纵向偏移量,向下为正数number2.12.0

使用方式如下,map 组件下添加名为 calloutslot 节点,其内部的 cover-view 通过 marker-id 属性与 marker 绑定。当 marker 创建时,该 cover-view 显示的内容将作为 callout 显示在标记点上方。

  1. <map>
  2. <cover-view slot="callout">
  3. <cover-view marker-id="1"></cover-view>
  4. <cover-view marker-id="2"></cover-view>
  5. </cover-view>
  6. </map>

示例DEMO: https://developers.weixin.qq.com/s/cZWIojm47pjN

marker 上的气泡 label

属性说明类型最低版本
content文本string1.2.0
color文本颜色string1.2.0
fontSize文字大小number1.2.0
xlabel的坐标(废弃)number1.2.0
ylabel的坐标(废弃)number1.2.0
anchorXlabel的坐标,原点是 marker 对应的经纬度number2.1.0
anchorYlabel的坐标,原点是 marker 对应的经纬度number2.1.0
borderWidth边框宽度number1.6.0
borderColor边框颜色string1.6.0
borderRadius边框圆角number1.6.0
bgColor背景色string1.6.0
padding文本边缘留白number1.6.0
textAlign文本对齐方式。有效值: left, right, centerstring1.6.0

polyline

指定一系列坐标点,从数组第一项连线至最后一项。绘制彩虹线时,需指定不同分段的颜色,如 points 包含 5 个点,则 colorList 应传入 4 个颜色值;若 colorList 长度小于 points.length - 1,则剩下的分段颜色与最后一项保持一致。

属性说明类型必填备注最低版本
points经纬度数组array[{latitude: 0, longitude: 0}]
color线的颜色string十六进制
colorList彩虹线array存在时忽略 color 值2.13.0
width线的宽度number
dottedLine是否虚线boolean默认 false
arrowLine带箭头的线boolean默认 false,开发者工具暂不支持该属性1.2.0
arrowIconPath更换箭头图标string在 arrowLine 为 true 时生效1.6.0
borderColor线的边框颜色string1.2.0
borderWidth线的厚度number1.2.0
level压盖关系string默认为 abovelabels2.14.0

level 字段表示与其它地图元素的压盖关系,可选值如下:

说明最低版本
abovelabels显示在所有 POI 之上2.14.0
abovebuildings显示在楼块之上 POI 之下2.14.0
aboveroads显示在道路之上楼块之下2.14.0

polygon

指定一系列坐标点,根据 points 坐标数据生成闭合多边形

属性说明类型必填备注最低版本
points经纬度数组array[{latitude: 0, longitude: 0}]2.3.0
strokeWidth描边的宽度number2.3.0
strokeColor描边的颜色string十六进制2.3.0
fillColor填充颜色string十六进制
zIndex设置多边形Z轴数值number2.3.0
level压盖关系string默认为 abovelabels2.14.0

circle

在地图上显示圆

属性说明类型必填备注
latitude纬度number浮点数,范围 -90 ~ 90
longitude经度number浮点数,范围 -180 ~ 180
color描边的颜色string十六进制
fillColor填充颜色string十六进制
radius半径number
strokeWidth描边的宽度number
level压盖关系string默认为 abovelabels

control

在地图上显示控件,控件不随着地图移动。即将废弃,请使用 cover-view

属性说明类型必填备注
id控件idnumber在控件点击事件回调会返回此id
position控件在地图的位置object控件相对地图位置
iconPath显示的图标string项目目录下的图片路径,支持本地路径、代码包路径
clickable是否可点击boolean默认不可点击

position

属性说明类型必填备注
left距离地图的左边界多远number默认为0
top距离地图的上边界多远number默认为0
width控件宽度number默认为图片宽度
height控件高度number默认为图片高度

bindregionchange 返回值

属性说明类型备注
type视野变化开始、结束时触发string视野变化开始为begin,结束为end
causedBy导致视野变化的原因string拖动地图导致(drag)、缩放导致(scale)、调用接口导致(update)

Bug & Tip

  1. tip:个性化地图暂不支持工具中调试。请先使用微信客户端进行测试。
  2. tip:地图中的颜色值color/borderColor/bgColor等需使用6位(8位)十六进制表示,8位时后两位表示alpha值,如:#000000AA
  3. tip:地图组件的经纬度必填, 如果不填经纬度则默认值是北京的经纬度。
  4. tip: map 组件使用的经纬度是火星坐标系,调用 wx.getLocation 接口需要指定 typegcj02
  5. tip:从 2.8.0 起 map 支持同层渲染,更多请参考原生组件使用限制
  6. tip:请注意原生组件使用限制

比例尺

scale34567891011
比例1000km500km200km100km50km50km20km10km5km
scale121314151617181920
比例2km1km500m200m100m50m50m20m10m

示例代码

在开发者工具中预览效果

点聚合

当地图上需要展示的标记点 marker 过多时,可能会导致界面上 marker 出现压盖,展示不全,并导致整体性能变差。针对此类问题,推出点聚合能力。

使用流程如下:

  1. MapContext.initMarkerCluster 对聚合点进行初始化配置(可选);
  2. MapContext.addMarkers 指定参与聚合的 marker;
  3. MapContext.on('markerClusterCreate', callback) 触发时,通过 MapContext.addMarkers 更新聚合簇的样式 (可选);
  4. MapContext.removeMarkers 移除参与聚合的 marker;

示例代码

在开发者工具中预览效果

需注意的是:1. 地图上的 marker 分为普通的 marker 与参与聚合的 marker,参与聚合时需指定属性 joinCluster 为 true; 2. 自定义聚合簇样式时,同样通过 MapContext.addMarkers 进行绘制,此时需携带 clusterId。