使用定位 Location
Location 组件用于在表单中获取用户当前的地理位置,适用于签到打卡、现场巡检、外勤记录等场景。
基础用法
- 在表单设计器中拖入 Location 组件。
- 运行时,用户点击"获取定位"按钮,浏览器会请求定位权限并获取当前经纬度。
- 定位成功后,坐标信息自动填入表单字段,随表单一起提交保存。
提示
首次使用时浏览器会弹出定位权限弹窗,用户需要点击"允许"才能获取位置。
配置逆地理编码(坐标转地址)
默认情况下组件只展示经纬度。如果希望同时展示可读地址(如"北京市海淀区中关村大街1号"),需要配置 reverseGeocodeUrl。
- 准备一个逆地理编码接口(可使用高德、百度地图 API 封装,或自有后端服务)。
- 在组件属性中填入
reverseGeocodeUrl。 - 定位成功后,组件会自动 POST
{ latitude, longitude }到该地址,期望返回{ address: "地址字符串" }或直接返回地址字符串。

接口示例:
POST /api/reverse-geocode
Content-Type: application/json
{ "latitude": 39.9042, "longitude": 116.4074 }
{ "address": "北京市东城区天安门广场" }
值的存储格式
组件值以 JSON 字符串存储:
{
"latitude": 39.9042,
"longitude": 116.4074,
"address": "北京市东城区天安门广场"
}
其中 address 仅在配置了 reverseGeocodeUrl 且成功获取时存在。
在 Scripts 中通过 JS 调用
除了使用 Location 组件,还可以在表单 Scripts 中通过 utilsApi.getLocation() 直接调用定位能力,适用于需要在自定义逻辑中获取位置的场景。
const result = await utilsApi.getLocation({
enableHighAccuracy: true,
timeout: 10000,
maximumAge: 0,
reverseGeocodeUrl: '/api/reverse-geocode', // 可选
suppressGeocodeError: false, // 为 true 时逆地理编码失败不报错,降级返回经纬度
});
// result: { latitude, longitude, accuracy, address }
返回值是一个 Promise,resolve 后得到 { latitude, longitude, accuracy, address } 对象。可以拿到结果后自行赋值给表单字段:
formApi.setFieldValue('locationField', JSON.stringify(result));