store-home

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

微信 鸿蒙 OS 版:支持

相关文档: 微信小店指引

渲染框架支持情况:WebView

功能描述

微信小程序内嵌微信小店首页,展示小店首页,并进行跳转交易。

属性说明

属性 类型 默认值 必填 说明
appid string 是 小店appid。获取方式:小店后台 – 店铺管理 – 基础信息 – 账号信息 – 微信小店ID。

Bug & Tip

  1. tip:平台规则限制,请保持组件内容完整展示且透明度、组件内部样式等未做修改,若不符合要求则会导致组件不可用,并可能导致使用本组件的能力被封禁。
  2. tip:暂不支持在微信 Windows 版和微信 Mac 版的微信小程序上使用本组件。

微信小程序 store-gift

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

微信 鸿蒙 OS 版:支持

渲染框架支持情况:WebView

功能描述

微信小程序送礼物接口支持微信小程序调用官方组件完成一次微信礼物的赠送,送礼后,用户可通过微信【我】-【订单与卡券】查看礼物订单详情。

属性说明

属性 类型 默认值 必填 说明 最低版本
present-order-id string 是 礼物订单id,调用“创建并发送礼物”或通过“查询礼物订单列表”open api拿到,open api文档链接。 3.8.10
open-id string 是 用户openid。 3.8.10
show-gift-card boolean true 否 控制是否展示礼物卡片,默认展示礼物卡片。 3.8.10
bindsuccess eventhandle 否 打开礼物成功的回调,event.detail={code,message}。【新特性支持】微信iOS / Android版本>=8.0.61、鸿蒙版本>=8.0.15,支持在成功打开礼物并回到微信小程序时,触发成功回调。 3.8.10
binderror eventhandle 否 打开礼物失败的回调,event.detail={code,message}。 3.8.10

组件引用示例代码

<store-gift present-order-id="xxx" open-id="xxx" />

<store-gift present-order-id="xxx" open-id="xxx" show-gift-card="{{false}}" bind:success="xxx" bind:error="xxx" />

detail 对象

属性名 类型 说明
code Number 状态码
message String 错误信息
code 常见错误码
值 含义 备注
-1001 打开礼物失败[参数错误] 代表调用组件的传参有误
-1003 打开礼物失败 调用客户端jsapi失败,是因为客户端是测试包不支持jsapi所致
-1004 正在loading无法打开礼物 正在获取礼物订单信息中,可提醒用户稍后再试
-1005 当前客户端版本不支持礼物领取

注:其他错误码,建议提示“打开失败,请联系微信小程序/小游戏客服”

Bug & Tip

  1. tip:参数 present-order-id、open-id、show-gift-card 请在组件首次加载时传入,暂不支持在组件加载完成后调整参数。
  2. tip:暂不支持在微信 Windows 版和微信 Mac 版的微信小程序上使用本组件。
  3. tip:已于3.14.2版本支持在微信 鸿蒙 OS 版的微信小程序上使用本组件。
  4. tip:礼物卡片展示时限制,最大宽度350px,最小宽度312px。
  5. tip:组件要求微信iOS版本>=8.0.61,微信Android版本>=8.0.61,微信鸿蒙版本>=8.0.15。

store-coupon

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

微信 鸿蒙 OS 版:支持

相关文档: 微信小店指引

渲染框架支持情况:WebView

功能描述

微信小程序内嵌微信小店优惠券,展示小店优惠券,并进行跳转交易。

属性说明

属性 类型 默认值 必填 说明 最低版本
appid string 是 小店appid。获取方式:小店后台 – 店铺管理 – 基础信息 – 账号信息 – 微信小店ID。
coupon-id string 是 优惠券id。获取小店优惠券id,可以通过小店后台 – 营销中心 – 优惠券。
custom-style object 否 自定义样式。支持自定义的样式请查看custom-style。
promoter-share-link string 否 推客参数。对于「机构推广券」类型优惠券,通过该参数,支持推客染色,可以通过接口获取。 3.8.11
bindentersuccess eventhandle 否 跳转小店成功的回调。
bindentererror eventhandle 否 跳转小店失败的回调,event.detail={code,message}。

自定义样式(custom-style)

键名 说明 允许自定义的属性
card 卡片样式 background-color、width
discount-fee 折扣金额样式(左上角) color
coupon-type 优惠券类型样式(左下角) color
condition-text 优惠使用条件样式(右上角) color
valid-time 优惠有效时间样式(右上角) color
coupon-button 优惠领取按钮样式 border-radius、color、background-color
coupon-text-disabled 优惠已领取状态样式 color
coupon-footer-line 卡片底部分割线样式 background-color
coupon-shop-icon 卡片底部logo icon样式 fill、fill-opacity
coupon-shop-nickname 卡片底部店铺昵称样式 color

自定义样式(custom-style)示例代码

<store-coupon appid="xxx" coupon-id="xxx" custom-style="{{customStyle}}" />
Page({
  data: {
    customStyle: {
      card: {
        'background-color': '#FAFAFA',
        'width': '300px',
      },
      'discount-fee': {
        color: 'rgba(0, 0, 0, 0.8)',
      },
      'coupon-type': {
        color: '#FF6146'
      },
      'condition-text': {
        color: '#FF6146'
      },
      'valid-time': {
        color: '#FF6146'
      },
      'coupon-button': {
        'border-radius': '30px',
        'background-color': 'rgba(0,0,0,0.9)',
        color: '#FFD48D',
      },
      'coupon-text-disabled': {
        color: '#FF6146'
      },
    },
  }
})

detail 对象

属性名 类型 说明
code Number 状态码
message String 错误信息
code 有效值
值 说明
-1 系统失败,请重试
0 成功
109114、268542430 优惠券券不存在
109119 该类型优惠券不支持在微信小程序发放

Bug & Tip

  1. tip:平台规则限制,请保持组件内容完整展示,如需自定义样式请使用 custom-style 。组件元素数量和间距、商品保障内容及售卖数据、组件文字大小、“购买”按钮高度不可进行修改,若不符合要求则会导致组件不可用,并可能导致使用本组件的能力被封禁。
  2. tip:暂不支持在微信 Windows 版和微信 Mac 版的微信小程序上使用本组件。
  3. tip:参数 product-promotion-link、media-id 请在组件首次加载时传入,暂不支持在组件加载完成后调整参数
  4. tip:暂不支持直播专享券、服务号限时活动券在微信小程序内发放

open-data

用户信息相关功能已进行调整,详见 微信小程序用户信息相关接口调整公告

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

微信小程序插件:不支持

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

用于展示微信开放的数据。

通用属性

属性 类型 默认值 必填 说明 最低版本
type string 否 开放数据类型 1.4.0
合法值 说明 最低版本
groupName 拉取群名称 1.4.0
userNickName 用户昵称。不再返回,展示“微信用户” 1.9.90
userAvatarUrl 用户头像。不再返回,展示 灰色头像 1.9.90
userGender 用户性别。不再返回,将展示为空(“”) 1.9.90
userCity 用户所在城市。不再返回,将展示为空(“”) 1.9.90
userProvince 用户所在省份。不再返回,将展示为空(“”) 1.9.90
userCountry 用户所在国家。不再返回,将展示为空(“”) 1.9.90
userLanguage 用户的语言。不再返回,将展示为空(“”) 1.9.90
open-gid string 否 当 type=”groupName” 时生效, 群id 1.4.0
lang string en 否 当 type=”user*” 时生效,以哪种语言展示 userInfo 1.4.0
合法值 说明
en 英文
zh_CN 简体中文
zh_TW 繁体中文
default-text string 否 数据为空时的默认文案 2.8.1
default-avatar string 否 用户头像为空时的默认图片,支持相对路径和网络图片路径 2.8.1
binderror eventhandle 否 群名称或用户信息为空时触发 2.8.1

Skyline 特有属性

属性 类型 默认值 必填 说明 最低版本
type string 否 开放数据类型 3.7.11
合法值 说明 最低版本
groupName 拉取群名称 3.7.11
default-text string 否 数据为空时的默认文案 3.7.11

Bug & Tip

  1. tip:只有当前用户在此群内才能拉取到群名称
  2. tip:关于open-gid的获取请使用 wx.getShareInfo

示例代码

在开发者工具中预览效果

<open-data type="groupName" open-gid="xxxxxx"></open-data>
<open-data type="userAvatarUrl"></open-data>
<open-data type="userGender" lang="zh_CN"></open-data>

微信小程序官方帐号发布

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

渲染框架支持情况:WebView

功能描述

贴图组件。

贴图组件为微信小程序开发者提供了在微信小程序里直接发表和消费贴图的能力。 该组件可以帮助开发者实现社区讨论、用户交流的功能,并且让更多人通过贴图发现微信小程序。

话题定制

贴图组件上会展示话题名称,用户从组件发表时也会默认带上对应的#话题。默认使用微信小程序名称作为话题,开发者也可通过topic参数自定义,最多20字。

内容展示

  • 组件里会展示从该组件发表的所有贴图(如果一个微信小程序里有多个同话题名称的组件,其下的贴图也会互通展示)。
  • 通过limit参数控制最多展示的贴图数量,上限10条。
  • 当组件下内容为空时,默认显示“来写下第一条吧”,可通过placeholder参数自定义文案,最多显示一行。

相关内容

修改话题名称后,历史发表内容不会在新话题中展示。为保留历史内容沉淀,在话题组件下方的“相关内容”区域可展示不在此话题下的历史发表内容。该区域默认展示,可通过show-related参数设置不展示。

推荐用户添加指定链接

设置recommend-path和recommend-title参数,编辑器支持推荐自定义标题的微信小程序链接,用户点击添加后将在正文展示链接卡片。

内容管理

  • 可以前往微信小程序后台对单条贴图进行置顶或拉黑(路径:开发管理 → 接口设置 → 接口权限 → 其它组件 → 贴图)。
  • 同一个话题下最多置顶3条贴图。
  • 微信小程序后台支持查看每个组件下的基础数据。

属性说明

属性 类型 默认值 必填 说明 最低版本
topic string 否 话题名称,最多20字,默认使用微信小程序名称 3.9.3
limit number 4 否 微信小程序页面内最多展示的贴图数量,超出后剩余的贴图需要点击「查看更多」前往查看 3.10.3
background-color color #f7f7f7 否 贴图组件的背景颜色 3.9.3
color-unity boolean false 否 是否需要色彩统一,话题名称颜色和贴图卡片背景颜色是否对齐 3.9.3
placeholder string 来写下第一条吧 否 无内容时的占位文案 3.10.2
show-related boolean true 否 是否展示相关内容 3.16.0
recommend-path string 否 贴图链接卡片跳转页面 3.16.1
recommend-title string 否 贴图链接卡片标题 3.16.1
binderror eventhandle 否 列表拉取失败时触发 3.9.3
bindempty eventhandle 否 列表拉取为空时触发 3.9.3
bindpublishsuccess eventhandle 否 发表成功时触发,在e.detail中可获取发表的贴图链接postUrl(只有在真正发表完成后链接才可访问) 3.11.3
bindpublishfail eventhandle 否 发表失败时触发 3.11.3

Bug & Tip

  1. tip:暂不支持在微信 Windows 版、微信 Mac 版及微信鸿蒙版本的微信小程序上显示发表按钮。
  2. tip:话题名称要求不超过20字,超过将不展示该组件。

示例代码

<official-account-publish topic="和coco一起做好事"></official-account-publish>

ad-custom

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

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

原生模板 广告。

属性说明

属性 类型 默认值 必填 说明 最低版本
unit-id string 是 广告单元id,可在微信小程序管理后台的流量主模块新建 2.10.4
ad-intervals number 否 广告自动刷新的间隔时间,单位为秒,参数值必须大于等于30(该参数不传入时 模板 广告不会自动刷新) 2.10.4
bindload eventhandle 否 广告加载成功的回调 2.10.4
binderror eventhandle 否 广告加载失败的回调,event.detail = {errCode: 1002} 2.10.4

错误码信息与解决方案表

错误码是通过binderror回调获取到的错误信息。

代码 异常情况 理由 解决方案
1000 后端错误调用失败 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
1001 参数错误 使用方法错误 可以前往developers.weixin.qq.com确认具体教程(微信小程序和小游戏分别有各自的教程,可以在顶部选项中,“设计”一栏的右侧进行切换。
1002 广告单元无效 可能是拼写错误、或者误用了其他APP的广告ID 请重新前往mp.weixin.qq.com确认广告位ID。
1003 内部错误 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
1004 无适合的广告 广告不是每一次都会出现,这次没有出现可能是由于该用户不适合浏览广告 属于正常情况,且开发者需要针对这种情况做形态上的兼容。
1005 广告组件审核中 你的广告正在被审核,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
1006 广告组件被驳回 你的广告审核失败,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
1007 广告组件被驳回 你的广告能力已经被封禁,封禁期间无法展现广告 请前往mp.weixin.qq.com确认微信小程序广告封禁状态。
1008 广告单元已关闭 该广告位的广告能力已经被关闭 请前往mp.weixin.qq.com重新打开对应广告位的展现。

Bug & Tip

  1. tip:在无广告展示时,ad-custom 标签不会占用高度
  2. tip:ad-custom 组件不支持触发 bindtap 等触摸相关事件
  3. tip:目前可以给 ad-custom 标签设置 wxss 样式调整广告宽度,以使广告与页面更融洽,但请遵循微信小程序流量主应用规范
  4. tip:监听到error回调后,开发者可以针对性的处理,比如隐藏广告组件的父容器,以保证用户体验,但不要移除广告组件,否则将无法收到bindload的回调
  5. tip:不同模板涉及一些不同的使用场景,具体方式请参考模板编辑器

ad

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

微信 Windows 版:支持

微信 Mac 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

Banner 广告。

通用属性

属性 类型 默认值 必填 说明 最低版本
unit-id string 是 广告单元id,可在微信小程序管理后台的流量主模块新建 1.9.94
ad-intervals number 否 广告自动刷新的间隔时间,单位为秒,参数值必须大于等于30(该参数不传入时 Banner 广告不会自动刷新) 2.3.1
ad-type string banner 否 广告类型,默认为展示banner,可通过设置该属性为video展示视频广告, grid为格子广告 2.8.0
ad-theme string white 否 2.8.0
bindload eventhandle 否 广告加载成功的回调 2.2.1
binderror eventhandle 否 广告加载失败的回调,event.detail = {errCode: 1002} 2.2.1
bindclose eventhandle 否 广告关闭的回调 2.6.5

错误码信息与解决方案表

错误码是通过binderror回调获取到的错误信息。

代码 异常情况 理由 解决方案
1000 后端错误调用失败 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
1001 参数错误 使用方法错误 可以前往developers.weixin.qq.com确认具体教程(微信小程序和小游戏分别有各自的教程,可以在顶部选项中,“设计”一栏的右侧进行切换。
1002 广告单元无效 可能是拼写错误、或者误用了其他APP的广告ID 请重新前往mp.weixin.qq.com确认广告位ID。
1003 内部错误 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
1004 无适合的广告 广告不是每一次都会出现,这次没有出现可能是由于该用户不适合浏览广告 属于正常情况,且开发者需要针对这种情况做形态上的兼容。
1005 广告组件审核中 你的广告正在被审核,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
1006 广告组件被驳回 你的广告审核失败,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
1007 广告组件被封禁 你的广告能力已经被封禁,封禁期间无法展现广告 请前往mp.weixin.qq.com确认微信小程序广告封禁状态。
1008 广告单元已关闭 该广告位的广告能力已经被关闭 请前往mp.weixin.qq.com重新打开对应广告位的展现。

Bug & Tip

  1. tip:在无广告展示时,ad 标签不会占用高度
  2. tip:ad 组件不支持触发 bindtap 等触摸相关事件
  3. tip:目前可以给 ad 标签设置 wxss 样式调整广告宽度,以使广告与页面更融洽,但请遵循微信小程序流量主应用规范
  4. tip:监听到error回调后,开发者可以针对性的处理,比如隐藏广告组件的父容器,以保证用户体验,但不要移除广告组件,否则将无法收到bindload的回调。

canvas

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

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 画布指南、Canvas 接口、旧版画布迁移指南

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

画布。从 2.9.0 版本开始支持一套新的 Canvas 2D 接口(需要指定 type 属性),同时支持同层渲染,原有接口不再维护。旧版本可以参考 旧版画布迁移指南 进行迁移。

属性说明

属性 类型 默认值 必填 说明 最低版本
type string 否 指定 canvas 类型,支持 2d (2.9.0) 和 webgl (2.7.0) 2.7.0
canvas-id string 否 canvas 组件的唯一标识符,如果指定了 type 则不需要再指定该属性 1.0.0
disable-scroll boolean false 否 当在 canvas 中移动并且有绑定手势事件时,禁止屏幕滚动以及下拉刷新 1.0.0
bindtouchstart eventhandle 否 手指触摸动作开始 1.0.0
bindtouchmove eventhandle 否 手指触摸后移动 1.0.0
bindtouchend eventhandle 否 手指触摸动作结束 1.0.0
bindtouchcancel eventhandle 否 手指触摸动作被打断,如来电提醒、弹窗 1.0.0
bindlongtap eventhandle 否 手指长按 500ms 之后触发,触发了长按事件后进行移动不会触发屏幕的滚动 1.0.0
binderror eventhandle 否 当发生错误时触发 error 事件,detail = {errMsg} 1.0.0

Bug & Tip

  1. tip:canvas 标签默认宽度为 300px、高度为 150px
  2. tip:同一页面中的 canvas-id 不能重复,如果使用一个已经出现过的 canvas-id,该 canvas 标签对应的画布将被隐藏并且不再正常工作
  3. tip:请注意原生组件使用限制
  4. tip:开发者工具中默认关闭了 GPU 硬件加速,可以在开发者工具的设置中开启“硬件加速”来提高 WebGL 的渲染性能
  5. tip: WebGL 支持通过 getContext(‘webgl’, { alpha: true }) 获取透明背景的画布
  6. tip: WebGL 暂不支持真机调试,建议使用真机预览
  7. tip: Canvas 2D(新接口)需要显式设置画布宽高,默认:300*150,最大:1365*1365
  8. bug: 避免设置过大的宽高,在安卓下会有崩溃的问题
  9. tip: iOS 暂不支持 pointer-events
  10. tip: 在 Mac 或 Windows 微信小程序下,如果当前组件所在的页面或全局开启了 enablePassiveEvent 配置项,该内置组件可能会出现非预期表现(详情参考 enablePassiveEvent 文档)
  11. tip: 鸿蒙 OS 下暂不支持外接纹理

Canvas 2D 示例代码

在开发者工具中预览效果

  <!-- canvas.wxml -->
  <canvas type="2d" id="myCanvas"></canvas>
// canvas.js
Page({
  onReady() {
    const query = wx.createSelectorQuery()
    query.select('#myCanvas')
      .fields({ node: true, size: true })
      .exec((res) => {
        const canvas = res[0].node
        const ctx = canvas.getContext('2d')

        const dpr = wx.getSystemInfoSync().pixelRatio
        canvas.width = res[0].width * dpr
        canvas.height = res[0].height * dpr
        ctx.scale(dpr, dpr)

        ctx.fillRect(0, 0, 100, 100)
      })
  }
})

WebGL 示例代码

在开发者工具中预览效果

  <!-- canvas.wxml -->
  <canvas type="webgl" id="myCanvas"></canvas>
// canvas.js
Page({
  onReady() {
    const query = wx.createSelectorQuery()
    query.select('#myCanvas').node().exec((res) => {
      const canvas = res[0].node
      const gl = canvas.getContext('webgl')
      gl.clearColor(1, 0, 1, 1)
      gl.clear(gl.COLOR_BUFFER_BIT)
    })
  }
})

示例代码(旧的接口)

在开发者工具中预览效果 下载

<!-- canvas.wxml -->
<canvas style="width: 300px; height: 200px;" canvas-id="firstCanvas"></canvas>
<!-- 当使用绝对定位时,文档流后边的 canvas 的显示层级高于前边的 canvas -->
<canvas style="width: 400px; height: 500px;" canvas-id="secondCanvas"></canvas>
<!-- 因为 canvas-id 与前一个 canvas 重复,该 canvas 不会显示,并会发送一个错误事件到 AppService -->
<canvas style="width: 400px; height: 500px;" canvas-id="secondCanvas" binderror="canvasIdErrorCallback"></canvas>
Page({
  canvasIdErrorCallback: function (e) {
    console.error(e.detail.errMsg)
  },
  onReady: function (e) {
    // 使用 wx.createContext 获取绘图上下文 context
    var context = wx.createCanvasContext('firstCanvas')

    context.setStrokeStyle("#00ff00")
    context.setLineWidth(5)
    context.rect(0, 0, 200, 200)
    context.stroke()
    context.setStrokeStyle("#ff0000")
    context.setLineWidth(2)
    context.moveTo(160, 100)
    context.arc(100, 100, 60, 0, 2 * Math.PI, true)
    context.moveTo(140, 100)
    context.arc(100, 100, 40, 0, Math.PI, false)
    context.moveTo(85, 80)
    context.arc(80, 80, 5, 0, 2 * Math.PI, true)
    context.moveTo(125, 80)
    context.arc(120, 80, 5, 0, 2 * Math.PI, true)
    context.stroke()
    context.draw()
  }
})

map

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

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: wx.createMapContext

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

地图 v2.7.0 起支持同层渲染。

map组件提供了地图展示、交互、叠加点线面及文字等功能,同时支持个性化地图样式,可结合地图服务 API 实现更丰富功能。

为了更好的提供地图服务,请在调用 map 组件之前,先前往腾讯位置服务官网注册一个专属 KEY,在地图开发过程中,可以将这个专属 KEY 通过 subkey 参数传入;后续如遇到地图开发问题也可以在腾讯位置服务官网工单系统提交工单反馈解决;

地图个性化样式组件

地图个性化样式组件是腾讯位置服务为开发者提供的地图高级能力,开发者可以在法律允许的范围内定制地图风格,支持定制背景面、背景线、道路、POI等地图元素颜色、显示层级等内容;支持按照类型精细化管理POI的显示、隐藏;灵活地设计贴合业务场景的心仪地图。

购买该能力后,您可以在 MP平台「管理->付费管理->概览->地图个性化样式->去使用」中创建配置您的地图个性化样式,您可以选择我们提供的基础及高级模版,也可以通过在线编辑平台,对多种地图元素的样式进行自定义设置,以满足在不同场景下的个性化需求。

image-20221216093905347

注意:

  1. 自2023年6月29日0点起,该能力需要先购买再使用。若未购买,届时将无法使用该能力。具体购买方式见 付费管理。
  2. 自2023年6月29日0时起,个性化地图配置界面的入口统一为微信公众平台-付费管理,请从此入口进入,腾讯位置服务官网入口不再使用。已经在微信小程序生效的个性化样式配置,将于2023年6月29日0时变更为默认样式,如有个性化样式配置需求,请于6月29日0时前,前往微信公众平台-付费管理进行相关能力的开通和配置。

地图服务API

地图服务API 与map组件基于同一套数据体系,无缝贴合,叠加使用可实现更丰富的功能。 提供:地点搜索、关键词输入提示、正/逆地址解析(经纬度与地址互转)驾车与步行路线规划等功能。

image-20221216091852465

详情见:地图服务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 否 显示带有方向的当前定位点,3.10.0起需要用户位置授权。3.13.2起如果开发者没有手动申请,则会自动申请 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 否 点击标签时触发,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
bindpolylinetap eventhandle 否 点击地图路线时触发,e.detail = {longitude, latitude} 3.1.0
bindabilitysuccess eventhandle 否 地图能力生效时触发,e.detail = {ability, errCode, errMsg}
bindabilityfail eventhandle 否 地图能力失败时触发,e.detail = {ability, errCode, errMsg}
bindauthsuccess eventhandle 否 地图鉴权成功时触发,e.detail = {errCode, errMsg}
bindinterpolatepoint eventhandle 否 MapContext.moveAlong 插值动画时触发。e.detail = {markerId, longitude, latitude, animationStatus: "interpolating" | "complete"} 3.1.0
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 分开设置,它们无法同时生效,需要通过 setting 来统一修改。

// 默认值
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 – 地点搜索 来实现地图搜索功能。

image-20221202072248626
属性 说明 类型 必填 备注 最低版本
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
collisionRelation 碰撞关系 string 否 详见下表碰撞关系 3.4.3
collision 碰撞类型 string 否 详见下表碰撞关系 3.4.3

marker 碰撞关系

在一定范围内绘制多个 Marker 时,经常会出现 Marker 互相压盖的情况,从3.4.3版本开始支持设置碰撞关系。

碰撞目标

默认情况下,Marker 不参与碰撞。collision 用于设置是否参与碰撞,支持枚举值 poi 和 marker,多种类型时用逗号 “,” 分隔。 poi: 和 poi 点碰撞后会隐藏 poi marker: 和 marker 碰撞后会隐藏自己或被碰撞的 marker

发生碰撞时,按照 zIndex 来区分优先级,优先级低的将会被隐藏。

例如 collision 设置为 poi,marker,表示与 poi 和 marker 均会参与碰撞。

整体碰撞或区域碰撞

微信小程序中 Marker 的各个部分,包括 iconPath、callout、label 等,可以作为一个整体参与碰撞,也可独立开来。

collisionRelation 属性支持 alone 和 together 两种值。 together: 作为整体参与碰撞后隐藏,此时忽略各部件 callout 和 label 的 collision 属性。 alone:独立参与碰撞后隐藏,此时各部件 callout 和 label 可单独设置 collision 属性,未填写时则与主 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
collision 碰撞类型 string 3.4.3

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>
  </cover-view>
</map>

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

marker 上的气泡 label

属性 说明 类型 最低版本
content 文本 string 1.2.0
color 文本颜色 string 1.2.0
fontSize 文字大小 number 1.2.0
x label的坐标(废弃) number 1.2.0
y label的坐标(废弃) number 1.2.0
anchorX label的坐标,原点是 marker 对应的经纬度 number 2.1.0
anchorY label的坐标,原点是 marker 对应的经纬度 number 2.1.0
borderWidth 边框宽度 number 1.6.0
borderColor 边框颜色 string 1.6.0
borderRadius 边框圆角 number 1.6.0
bgColor 背景色 string 1.6.0
padding 文本边缘留白 number 1.6.0
textAlign 文本对齐方式。有效值: left, right, center string 1.6.0
collision 碰撞类型 string 3.4.3

点聚合

当地图上需要展示的标记点 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。

polyline

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

注:可结合 地图服务API – 驾车路线规划,实现路线计算与展示。

image-20221202072403128
属性 说明 类型 必填 备注 最低版本
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 线的边框颜色 string 否 1.2.0
borderWidth 线的厚度 number 否 1.2.0
level 压盖关系 string 否 默认为 abovelabels 2.14.0
textStyle 文字样式 TextStyle 否 折线上文本样式 2.22.0
segmentTexts 分段文本 Array<SegmentText> 否 折线上文本内容和位置 2.22.0

注:textStyle 与 segmentTexts 结合可在折线线段上面绘制文字,用来显示路名。

SegmentText

属性 说明 类型 默认值
name 名称 string ”
startIndex 起点 number
endIndex 终点 number

TextStyle

属性 说明 类型 默认值
textColor 文本颜色 string #000000
strokeColor 描边颜色 string #ffffff
fontSize 文本大小 number 14

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

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

polygon

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

image-20221202072441958
属性 说明 类型 必填 备注 最低版本
dashArray 边线虚线 Array<number> 否 默认值 [0, 0] 为实线,[10, 10]表示十个像素的实线和十个像素的空白(如此反复)组成的虚线 2.22.0
points 经纬度数组 array 是 [{latitude: 0, longitude: 0}] 2.3.0
strokeWidth 描边的宽度 number 否 2.3.0
strokeColor 描边的颜色 string 否 十六进制 2.3.0
fillColor 填充颜色 string 否 十六进制
zIndex 设置多边形 Z 轴数值 number 否 2.3.0
level 压盖关系 string 否 默认为 abovelabels 2.14.0

circle

在地图上显示圆

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

control

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

属性 说明 类型 必填 备注
id 控件id number 否 在控件点击事件回调会返回此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)

比例尺

scale 3 4 5 6 7 8 9 10 11
比例 1000km 500km 200km 100km 50km 25km 20km 10km 5km
scale 12 13 14 15 16 17 18 19 20
比例 2km 1km 500m 200m 100m 50m 20m 10m 5m

bindabilitysuccess、bindabilityfail 和 binderror 的返回值

bindabilitysuccess 和 bindabilityfail 事件会额外返回一个 ability 参数,用来指示是哪种地图能力,可能的取值有:layer-style。

它们共有的参数 errCode 的定义如下:

errCode 说明 |
无 地图创建失败 |
0 成功 |
[-100, -500] | 服务器鉴权错误
1000 | 网络链路错误
1001 | 内部错误
1400001 | 欠费

示例代码

在开发者工具中预览效果

Bug & Tip

  1. tip:个性化地图暂不支持在工具中调试。请先使用微信客户端进行测试。
  2. tip:地图中的颜色值color/borderColor/bgColor等需使用6位(8位)十六进制表示,8位时后两位表示alpha值,如:#000000AA
  3. tip:地图组件的经纬度必填,如果不填经纬度则默认值是北京的经纬度。
  4. tip: map 组件使用的经纬度是火星坐标系,调用 wx.getLocation 接口需要指定 type 为 gcj02
  5. tip:从 2.8.0 起 map 支持同层渲染,更多请参考原生组件使用限制
  6. tip:请注意原生组件使用限制。
  7. tip: 如果当前组件所在的页面或全局开启了 enablePassiveEvent 配置项,该内置组件可能会出现非预期表现(详情参考 enablePassiveEvent 文档)