# map
基础库 1.0.0 开始支持,低版本需做 兼容处理 。
微信 Windows 版 :支持
微信 Mac 版 :支持
相关 api: wx.createMapContext
# 功能描述
地图 v2.7.0 起支持 同层渲染 。
map组件提供了地图展示、交互、叠加点线面及文字等功能,同时支持个性化地图样式,可结合地图服务 API 实现更丰富功能。
# 地图个性化样式组件
地图个性化样式组件是腾讯位置服务为开发者提供的地图高级能力,开发者可以在法律允许的范围内,定制背景面、背景线、道路、POI等多种地图元素,灵活地设计心仪的地图样式。
购买该能力后,您可以在 MP平台 「管理->付费管理->概览->地图个性化样式->去使用」中创建配置您的地图个性化样式,您可以选择我们提供的基础及高级模版,也可以通过在线编辑平台,对多种地图元素的样式进行自定义设置,以满足在不同场景下的个性化需求。
注意:
- 自2023年6月29日0点起,该能力需要先购买再使用。若未购买,届时将无法使用该能力。具体购买方式见 付费管理 。
- 自2023年6月29日0时起,个性化地图配置界面的入口统一为 微信公众平台-付费管理 ,请从此入口进入,腾讯位置服务官网入口不再使用。已经在小程序生效的个性化样式配置,将于2023年6月29日0时变更为默认样式,如有个性化样式配置需求,请于6月29日0时前,前往 微信公众平台-付费管理 进行相关能力的开通和配置。
# 地图服务API
地图服务API 与map组件基于同一套数据体系,无缝贴合,叠加使用可实现更丰富的功能。 提供:地点搜索、关键词输入提示、正/逆地址解析(经纬度与地址互转)驾车与步行路线规划等功能。
详情见: 地图服务API在小程序中的使用方法
若开发者使用通过LBS开放平台自行申请的服务账号,在小程序连接并调用位置服务产品用于商业行为(政府公共事务及公益组织事务除外),腾讯位置服务有权收取商业授权费,详细内容可以查看或咨询 腾讯微位置服务官网
# 深入控制地图
通过微信小程序API中 wx.createMapContext 方法,创建 map 上下文 MapContext 对象,通过其实现更细粒度的地图交互和功能,包括:控制地图视野、获取地图位置与视角等信息、marker移动(轨迹回放)、动态创建个性化图层、拉起地图APP选择导航等
# 小程序插件
现成插件简单接入,提供:路线规划、地图选点、城市选择器、地铁图 常用功能。
详情见: 小程序地图插件使用指南
# 开源示例中心
包含Map组件、服务API、插件等功能使用方法,全面了解小程序下的所有地图能力。示例内容源码开放,降低各位开发者接入成本。
# 地图基础属性
# 属性说明
属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|---|
longitude | number | 是 | 中心经度 | 1.0.0 | |
latitude | number | 是 | 中心纬度 | 1.0.0 | |
scale | number | 16 | 否 | 缩放级别,取值范围为3-20 | 1.0.0 |
min-scale | number | 3 | 否 | 最小缩放级别 | 2.13.0 |
max-scale | number | 20 | 否 | 最大缩放级别 | 2.13.0 |
markers | Array.<marker> | 否 | 标记点 | 1.0.0 | |
covers | Array.<cover> | 否 | 即将移除,请使用 markers | 1.0.0 | |
polyline | Array.<polyline> | 否 | 路线 | 1.0.0 | |
circles | Array.<circle> | 否 | 圆 | 1.0.0 | |
controls | Array.<control> | 否 | 控件(即将废弃,建议使用 cover-view 代替) | 1.0.0 | |
include-points | Array.<point> | 否 | 缩放视野以包含所有给定的坐标点 | 1.0.0 | |
show-location | boolean | false | 否 | 显示带有方向的当前定位点 | 1.0.0 |
polygons | Array.<polygon> | 否 | 多边形 | 2.3.0 | |
subkey | string | 否 | 地图能力【个性化地图】使用的key,不支持动态修改 | 2.3.0 | |
layer-style | number | 1 | 否 | 地图能力【个性化地图】配置的 style | |
rotate | number | 0 | 否 | 旋转角度,范围 0 ~ 360, 地图正北和设备 y 轴角度的夹角 | 2.5.0 |
skew | number | 0 | 否 | 倾斜角度,范围 0 ~ 40 , 关于 z 轴的倾角 | 2.5.0 |
enable-3D | boolean | false | 否 | 展示3D楼块 | 2.3.0 |
show-compass | boolean | false | 否 | 显示指南针 | 2.3.0 |
show-scale | boolean | false | 否 | 显示比例尺,工具暂不支持 | 2.8.0 |
enable-overlooking | boolean | false | 否 | 开启俯视 | 2.3.0 |
enable-auto-max-overlooking | boolean | false | 否 | 开启最大俯视角,俯视角度从 45 度拓展到 75 度 | 2.26.0 |
enable-zoom | boolean | true | 否 | 是否支持缩放 | 2.3.0 |
enable-scroll | boolean | true | 否 | 是否支持拖动 | 2.3.0 |
enable-rotate | boolean | false | 否 | 是否支持旋转 | 2.3.0 |
enable-satellite | boolean | false | 否 | 是否开启卫星图 | 2.7.0 |
enable-traffic | boolean | false | 否 | 是否开启实时路况 | 2.7.0 |
enable-poi | boolean | true | 否 | 是否展示 POI 点 | 2.14.0 |
enable-building | boolean | 否 | 是否展示建筑物 | 2.14.0 | |
setting | object | 否 | 配置项 | 2.8.2 | |
bindtap | eventhandle | 否 | 点击地图时触发, 2.9.0 起返回经纬度信息 | 1.0.0 | |
bindmarkertap | eventhandle | 否 |
点击标记点时触发,
e.detail = {markerId}
|
1.0.0 | |
bindlabeltap | eventhandle | 否 |
点击label时触发,
e.detail = {markerId}
|
2.9.0 | |
bindcontroltap | eventhandle | 否 |
点击控件时触发,
e.detail = {controlId}
|
1.0.0 | |
bindcallouttap | eventhandle | 否 |
点击标记点对应的气泡时触发
e.detail = {markerId}
|
1.2.0 | |
bindupdated | eventhandle | 否 | 在地图渲染更新完成时触发 | 1.6.0 | |
bindregionchange | eventhandle | 否 | 视野发生变化时触发, | 2.3.0 | |
bindpoitap | eventhandle | 否 |
点击地图poi点时触发,
e.detail = {name, longitude, latitude}
|
2.3.0 | |
bindabilitysuccess | eventhandle | 否 |
地图能力生效时触发,
e.detail = {ability, errCode, errMsg}
|
||
bindabilityfailed | eventhandle | 否 |
地图能力失败时触发,
e.detail = {ability, errCode, errMsg}
|
||
bindauthsuccess | eventhandle | 否 |
地图鉴权结果成功时触发,
e.detail = {errCode, errMsg}
|
||
binderror | eventhandle | 否 |
组件错误时触发,例如创建或鉴权失败,
e.detail = {longitude, latitude}
|
# regionchange 返回值
视野改变时,regionchange 会触发两次,返回的 type 值分别为 begin 和 end。
2.8.0 起 begin 阶段返回 causedBy,有效值为 gesture(手势触发) & update(接口触发)
2.3.0 起 end 阶段返回 causedBy,有效值为 drag(拖动导致)、scale(缩放导致)、update(调用更新接口导致)。
e = {causedBy, type, detail: {rotate, skew, scale, centerLocation, region}}
# setting
提供 setting 对象统一设置地图配置。同时对于一些动画属性如
rotate
和
skew
,通过
setData
分开设置时无法同时生效,需通过
settting
统一修改。
// 默认值
const setting = {
skew: 0,
rotate: 0,
showLocation: false,
showScale: false,
subKey: '',
layerStyle: 1,
enableZoom: true,
enableScroll: true,
enableRotate: false,
showCompass: false,
enable3D: false,
enableOverlooking: false,
enableSatellite: false,
enableTraffic: false,
this.setData({
// 仅设置的属性会生效,其它的不受影响
setting: {
enable3D: true,
enableTraffic: true
# marker
标记点用于在地图上显示标记的位置。
注:可结合 地图服务API - 地点搜索 实现地图搜索功能。
属性 | 说明 | 类型 | 必填 | 备注 | 最低版本 |
---|---|---|---|---|---|
id | 标记点 id | number | 否 | marker 点击事件回调会返回此 id。 | |
clusterId | 聚合簇的 id | Number | 否 | 自定义点聚合簇效果时使用 | |
joinCluster | 是否参与点聚合 | Boolean | 否 | 默认不参与点聚合 | |
latitude | 纬度 | number | 是 | 浮点数,范围 -90 ~ 90 | |
longitude | 经度 | number | 是 | 浮点数,范围 -180 ~ 180 | |
title | 标注点名 | string | 否 | 点击时显示,callout 存在时将被忽略 | |
zIndex | 显示层级 | number | 否 | 2.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 | 无障碍访问,(属性)元素的额外描述 | string | 否 | 2.5.0 |
注: 建议为每个 marker 设置上 number 类型 id,保证更新 marker 时有更好的性能。
# marker 上的气泡 callout
属性 | 说明 | 类型 | 最低版本 |
---|---|---|---|
content | 文本 | string | 1.2.0 |
color | 文本颜色 | string | 1.2.0 |
fontSize | 文字大小 | number | 1.2.0 |
borderRadius | 边框圆角 | number | 1.2.0 |
borderWidth | 边框宽度 | number | 2.3.0 |
borderColor | 边框颜色 | string | 2.3.0 |
bgColor | 背景色 | string | 1.2.0 |
padding | 文本边缘留白 | number | 1.2.0 |
display | 'BYCLICK':点击显示; 'ALWAYS':常显 | string | 1.2.0 |
textAlign | 文本对齐方式。有效值: left, right, center | string | 1.6.0 |
anchorX | 横向偏移量,向右为正数 | number | 2.11.0 |
anchorY | 纵向偏移量,向下为正数 | number | 2.11.0 |
# marker 上的自定义气泡 customCallout
customCallout
存在时将忽略
callout
与
title
属性。自定义气泡采用
cover-view
定制,灵活度更高。
属性 | 说明 | 类型 | 最低版本 |
---|---|---|---|
display | 'BYCLICK':点击显示; 'ALWAYS':常显 | string | 2.12.0 |
anchorX | 横向偏移量,向右为正数 | number | 2.12.0 |
anchorY | 纵向偏移量,向下为正数 | number | 2.12.0 |
使用方式如下,
map
组件下添加名为
callout
的
slot
节点,其内部的
cover-view
通过 marker-id 属性与
marker
绑定。当
marker
创建时,该
cover-view
显示的内容将作为
callout
显示在标记点上方。
<map>
<cover-view slot="callout">
<cover-view marker-id="1"></cover-view>
<cover-view marker-id="2"></cover-view>