定位

了解何时使用 HAC 定位功能,并通过 Demo 学会配置命令、查看效果和处理常见问题。

适用场景

定位功能可以获取 PDA 或 Android 设备当前所在的位置,并把经纬度写入活字格页面。

下面这些业务通常会用到定位:

  • 现场签到:记录人员签到时所在的位置;
  • 巡检打卡:确认巡检人员是否到达指定区域;
  • 物流跟踪:记录货物交接、装车或签收的位置;
  • 门店拜访:记录业务人员到店时间和位置;
  • 异常上报:保存问题发生地点,方便后续处理。

如果只需要让用户填写或选择一个地址,使用普通表单即可。如果需要记录“设备当时在哪里”,则应使用定位命令。

需要注意:定位只能说明设备所在的位置,不能单独证明某个设备、货物或门店已经被真实检查。重要业务还可以配合扫码、拍照等方式进行确认。

功能说明

定位功能通过 HAC 调用 Android 设备的定位能力,取得经纬度,再将结果显示或保存到活字格页面中。

使用前提

  • 应用运行在 HAC 中;普通浏览器无法调用插件提供的定位命令;
  • 已安装 PDA / Android 交互命令插件;
  • 设备已经开启定位服务,并向 HAC 授予定位权限;
  • GPS 信号、基站或 Wi-Fi 定位可用;第一次测试建议在室外进行。

命令选择

插件提供两个定位命令。第一次使用时,可以先选择直接写入单元格的命令;需要完整处理等待、成功和失败状态时,再使用异步命令。

命令能做什么适合的情况
【读取地理位置到单元格】将纬度、经度和错误信息直接写入指定单元格配置简单,适合初次使用或简单页面
【读取地理位置】读取定位结果,并在定位完成后继续处理页面流程适合需要显示等待状态、判断成功或失败的正式业务

定位结果通常包含以下内容:

中文含义返回字段用途
纬度Latitude表示南北方向的位置
经度Longitude表示东西方向的位置
是否成功IsSuccess判断本次定位是否成功
错误信息Error定位失败时说明原因

坐标系选择

坐标系必须和页面使用的地图一致,否则地图上的定位点可能发生偏移。

页面使用的地图选择的坐标系
Google Map 等国外地图WGS84
高德地图、腾讯地图GCJ02
百度地图BD09

下面的 Demo 使用百度地图,因此命令中的坐标系选择 BD09

Demo 配置与运行效果

这个 Demo 的操作很简单:用户点击“获取位置信息”,页面显示设备当前的经纬度,并在百度地图上标出位置。

定位结果写入配置

在按钮的命令中选择【读取地理位置】,并把坐标系设置为 BD09:百度地图专用坐标

读取地理位置的配置

与【读取地理位置到单元格】不同,【读取地理位置】不提供纬度、经度或错误信息的目标单元格设置,而是把定位结果返回给页面继续处理。定位成功后,页面根据返回的经纬度更新地图单元格,地图单元格据此显示对应位置;本页不展开地图单元格的 JavaScript 配置。

正式业务可以按下面的流程处理定位结果:

用户点击“获取位置信息”
-> 页面显示“定位中”
-> 执行【读取地理位置】
-> 成功:保存经纬度、坐标系、定位时间和设备信息
-> 失败:显示错误信息,并允许用户重试

HAC 运行效果

发布应用后,在已经开启定位权限的 HAC 中打开 Demo,点击“获取位置信息”。第一次定位可能需要等待几秒,请不要连续点击按钮。

HAC 中显示经纬度和百度地图定位点

定位成功后,页面会显示:

  • 当前设备的纬度和经度;
  • 根据经纬度生成的百度地图定位点;
  • 用于提醒测试人员的室外测试说明。

如果经纬度已经显示,并且地图上的定位点与设备实际位置基本一致,说明定位命令和坐标系已经配置成功。截图中的坐标只是示例,实际结果以测试设备所在位置为准。

常见问题

定位无响应或失败

先检查 HAC 是否取得定位权限,再检查设备的系统定位服务是否已经开启。修正后允许用户重新定位,不要让用户重新填写整张表单。

定位耗时较长

室内、GPS 冷启动或网络较差时,定位可能需要更长时间。页面应显示“定位中”,并暂时禁用定位按钮,避免用户重复点击。必要时可以允许跳过,但要记录跳过原因。

地图位置偏移

优先检查坐标系是否与地图一致:百度地图使用 BD09,高德和腾讯地图使用 GCJ02,Google Map 等国外地图使用 WGS84。

地图未显示

经纬度可能已经读取成功,但网络较差导致地图没有加载。应分别提示“定位结果”和“地图加载状态”,避免用户重复定位。

普通浏览器无法定位

插件命令需要在 HAC 中运行。对于普通浏览器,应隐藏定位入口,或者明确提示“请在 HAC 中使用此功能”。

业务数据记录

用于考勤、巡检、签收等业务时,除了经纬度,还应保存坐标系、定位时间、操作人和设备信息。定位失败时应提供重试或备用流程,例如通过扫码确认现场对象。

本页目录