跳到主要内容

地图定位

WdLocation

适用场景​

表单中实现选点定位

图片 df955fc69a826d22169315c9fdaaa3bf 图片 760de127f263be54a6ad5a89633384d4

基础能力​

绑定「地理位置」字段​

表单容器绑定数据模型后,模型中的「地理位置」字段会自动渲染为地图定位组件,实现选点定位

注意事项​

使用前必读

使用地图定位组件前,请确保已完成以下配置,否则组件可能无法正常工作。

1. 腾讯地图 API 配置(必需)​

地图定位组件需进行地图 API 配置才可使用。点击地图 API,选择腾讯地图 API。若无 API,请先新建腾讯地图 API,具体请参考 腾讯地图 API。

该组件调用腾讯地图服务,需要消耗相关 API 配额,可前往 腾讯地图开放平台 查看 key 消耗情况,具体参考 配额说明。

组件内用到的主要服务包括:

服务名称服务路径
周边推荐/ws/place/v1/explore
地点搜索/ws/place/v1/search
关键词输入提示/ws/place/v1/suggestion
地址解析/ws/geocoder/v1/?address=*

2. 权限配置(V2 协议)​

组件自 3.30.0 版本起支持使用 V2 协议 APIs。使用 V2 协议时,非超级管理员角色需要完成权限配置,请参考 APIs 2.0 用户角色权限配置指引 在云后台完成授权。

3. 请求域名配置(V2 协议 + 小程序端)​

组件自 3.30.0 版本起支持使用 V2 协议 APIs。在小程序端使用 V2 协议时,需要额外配置请求域名:

请求域名配置

请求域名格式为 https://{环境ID}.api.tcloudbasegateway.com,其中域名前缀即为当前云开发环境 ID。

4. 小程序端配置​

小程序端使用地图定位组件,需按照以下步骤进行配置:

步骤一:开通定位接口权限

小程序应用会调用微信官方的 wx.getLocation 接口实现定位,需符合小程序限制的类目要求,并在 微信公众平台 的「开发」-「开发管理」-「接口设置」模块中,自助开通「获取当前的地理位置、速度」接口的权限。

开通定位接口权限

步骤二:配置 appJson

自 2022 年 7 月 14 日起,开发者在使用地理位置相关接口时,需要提前在 app.json 中进行配置。请打开低码编辑器 commom/mp_config 文件,对 appJson 配置如下属性:

appJson: {
permission: {
'scope.userLocation': {
desc: '你的位置信息将用于小程序位置接口的效果展示',
},
},
requiredPrivateInfos: [ "getLocation" ]
}

appJson 配置

步骤三:完善隐私协议

发布正式小程序提审后,需要完善用户隐私协议保护,具体请参考 小程序隐私保护指引适配说明。

隐私协议配置1

隐私协议配置2

5. 常见问题​

小程序提交审核报错​

错误信息解决方案
代码中含有 ext.json 未配置隐私接口 getLocation请参考上面「步骤二:配置 appJson」进行配置
ext.json 配置的隐私接口 getLocation 无权限请参考上面「步骤一:开通定位接口权限」申请权限

浏览器定位失败​

错误信息原因及解决方案
Browser not Support html5 geolocation浏览器不支持原生定位接口,如 IE 较低版本的浏览器等
Geolocation permission denied用户禁用了定位权限,需开启设备和浏览器的定位权限;或浏览器禁止了非安全域的定位请求,需升级站点到 HTTPS
Get geolocation time out浏览器定位超时,可适当增加超时属性的设定值
Get geolocation failed定位失败,Chrome、火狐等浏览器接入的定位服务在国外,失败率较高

扩展场景​

定位调整范围配置​

组件提供了「定位调整范围」属性,可约束用户的选点定位范围,仅可为当前实际定位点的一定范围内

图片 8eb3dd4638111675a8083ecf322e4dbf 图片 1010569f3c90ed9275bc5158d9bd21db

其他场景实践​

查阅表单场景实践指南,可学习了解关于表单的各类支持场景和实现方案

示例​

交互式预览​

组件输入状态​

样式 API 示例​

#wd-page-root .wd-pc-location-root .wd-location__label {
color: cyan;
background-color: black;
display: flex;
justify-content: center;
}
#wd-page-root .wd-h5-location-root .wd-location-location {
border-color: cyan;
color: cyan;
background-color: black;
border-width: 2px;
border-radius: 6px;
}

属性​

组件接收的外部传入的属性

属性名
属性标识
类型
说明
显示标题labelVisibleboolean

默认值:true

标题对齐labelAlignstring

表单场景下默认会跟随表单容器的标题对齐配置

标题换行labelWrapboolean

如果标题内容过长关闭时只显示一行、溢出省略;开启时换行展示。表单场景下默认会跟随表单容器的标题换行配置

标题位置layoutstring

设置标题在表单组件的展示位置,表单场景下默认会跟随表单容器的标题的位置配置

标题宽度labelWidthstring

您可以输入数值 + px、%等单位,示例:200px

表单场景下默认会跟随表单容器的标题宽度配置

标题提示labelTipsstring

PC/H5端生效

配置标题的工具提示内容

显示清空按钮clearableboolean

开启后提供快捷清空按钮

默认值:true

下方提示extrastring

配置后提示内容常显在输入框下方

显示经纬度showLngLatboolean

显示所选位置的经纬度

显示地图showMapboolean

显示所选位置的地图

打开微信内置地图(小程序)openLocationboolean

仅支持小程序端开启,开启后,可点击地图调起微信内置地图查看位置,或者开始导航

使用微信内置地图查看位置

移动端显示下划线borderedH5boolean

关闭后移动端不显示底部下划线

默认值:true

定位调整范围locationRangestring0
自定义范围米customRangenumber0
允许缩放zoomboolean

允许缩放地图

默认值:true

允许拖动dragboolean

允许拖动地图

示例:true

状态statusstring

示例:"edit"

必填requiredboolean
必填标识requiredFlagboolean

启用后,组件若要求必填,则会显示必填星号标记

默认值:true

必填校验提示requiredMsgstring

示例:"该项为必填项"

绑定字段namestring

表单字段的Key值,用于提交数据时,匹配数据模型字段标识。表单内需保证唯一。

标题内容labelstring

示例:"地图"

地图APIsdataSourceobject

如需小程序端使用,请务必参考 配置指引 完成微信接口权限申请,并调整appJson内容

关联腾讯地图的APIs,小程序会调用微信官方接口实现定位,请确保已通过相关接口申请,详细说明可查看该组件说明文档

默认位置locationTypenumber

地理位置的默认值

示例:1

默认值valueobject

纬度,范围为-90~90;经度,范围为-180~180,位置经纬度可前往腾讯位置服务获取 去获取

示例:null

占位文字placeholderstring

示例:"选择地理位置"

事件​

组件暴露的事件,可以监听组件的事件来触发一些外部的动作

事件名
事件code
事件出参 event.detail
适用情况
说明
值改变changeobject
  • value: object 值
    • address: string

      地点名称

    • geopoint: object

      经纬度

      • type: string 默认值:Point
      • coordinates: array
兼容三端

用户修改组件值时触发

地图组件错误事件errorobject
  • error: object 错误信息

    组件内部抛出的错误信息

    • requestid: string请求 id

      如果是接口相关错误会提供请求 id

    • message: string错误提示信息
    • code: string错误码
    • original: 原始错误
移动端,PC端

地图加载失败,或地图组件使用异常时触发

属性 API​

通过属性 API,可以获取组件内部的状态和属性值,可以通过$w.componentId.propertyName 来访问组件内部的值,如 $w.input1.value ,详请请参考 属性 API

只读属性名
属性标识
类型
说明
绑定字段namestring

表单字段的Key值,用于提交数据时,匹配数据模型字段标识。表单内需保证唯一。

标题内容labelstring
默认值valueobject
必填requiredboolean
是否展示visibleboolean

组件是否展示

是否禁用disabledboolean

组件是否禁用

是否只读readOnlyboolean

组件是否只读

方法 API​

通过方法 API,可以通过程序触发组件内部的方法,比如提交表单,显示弹窗等, 可以通过$w.componentId.methodName来调用组件方法,如 $w.form1.submit()

方法名
方法标识
参数
方法说明
设置值setValueobject
  • value: object 值
    • address: string

      地点名称

    • geopoint: object

      经纬度

      • type: string 默认值:Point
      • coordinates: array

通过 $w.id1.setValue({address:"深圳站",geopoint:{coordinates:[114.117209,22.53168]}}) 设置组件值

设置显隐setVisibleboolean显示

通过 $w.id1.setVisible(false) 设置组件为隐藏

设置禁用setDisabledboolean禁用

通过 $w.id1.setDisabled(true) 设置组件为禁用

清空值clearValue

通过 $w.id1.clearValue() 清空组件值

设置只读setReadOnlyboolean只读

通过 $w.id1.setReadOnly(true) 设置组件为只读

触发校验handleValidate

通过 $w.id1.handleValidate() 校验组件值

清除校验clearValidate

通过 $w.id1.clearValidate() 清除组件校验

样式 API​

通过样式 API,可以覆盖组件中内部元素的样式来实现自定义,例如在低代码编辑器中中通过 #wd-page-root .wd-btn 即可为所有的按钮组件编写样式,通过 :scope 可以控制单个组件样式, 详细说明请参考样式 API

名称
类名
说明和示例
根元素.wd-location-root组件最外层元素
/* :scope 指的是当前组件元素 */
/* 具体可参考样式 API 文档 */
:scope.wd-location-root {
  /* 在这里编写CSS 样式 */
}
H5 端根元素.wd-h5-location-root可设定 H5 端的根元素样式
/* :scope 指的是当前组件元素 */
/* 具体可参考样式 API 文档 */
:scope.wd-h5-location-root {
  /* 在这里编写CSS 样式 */
}
PC 端根元素.wd-pc-location-root可设定 PC 端的根元素样式
/* :scope 指的是当前组件元素 */
/* 具体可参考样式 API 文档 */
:scope.wd-pc-location-root {
  /* 在这里编写CSS 样式 */
}
小程序端根元素.wd-mp-location-root可设定小程序端的根元素样式
/* :scope 指的是当前组件元素 */
/* 具体可参考样式 API 文档 */
:scope.wd-mp-location-root {
  /* 在这里编写CSS 样式 */
}
组件标题样式.wd-location-root .wd-form-item-wrap__label组件标题元素

:scope .wd-form-item-wrap__label {
  font-size: 20px;
  color: gray;
  padding: 0;
  display: flex;
  align-items: center;
}
表单控件根节点样式.wd-location-root .wd-form-item-wrap__control设置表单控件根元素样式

:scope .wd-form-item-wrap__control {
  font-size: 20px;
  color: gray;
  padding: 0;
  display: flex;
  align-items: center;
}
编辑态-位置信息样式.wd-location-root .wd-location__info编辑态-位置信息样式

          :scope .wd-location__info {
font-size: 20px;
color: gray;
          }
          
编辑态-占位文字样式.wd-location-root .form-location-con__text编辑态-占位文字样式

          :scope .form-location-con__text {
color: lightgray;
          }
          
编辑态-校验信息.wd-location-root .wd-g-text-error设置组件校验信息样式

:scope .wd-g-text-error {
    font-size: 20px;
    color: gray;
  }
提示文字.wd-location-root .wd-form-item__help-text设置组件提示文字样式

:scope .wd-form-item__help-text {
    font-size: 20px;
    color: gray;
  }
禁用态-位置信息样式.wd-location-root .is-disabled .wd-location__info禁用态-位置信息样式

          :scope .is-disabled .wd-location__info {
font-size: 20px;
color: gray;
          }
          
只读态-表单值样式.wd-location-root .wd-form-item__readonly-value设置组件只读状态

:scope .wd-form-item__readonly-value {
    font-size: 20px;
    color: gray;
  }

了解样式 API

版本变化​

  • 属性变化
  • 样式变化
  • widget api 变化