# 配送平台 H5 测试案例

依据 docs/delivery-sdk-integration.md 与 docs/sdk-coordinate-conversion.md 编写，使用 JS SDK 0.1.0-alpha.38 的公开接口，不调用 SDK 内部实现。

## 测试步骤

0. 安卓实测联动：安装「Sukha跑腿实测」1.4.0，在地图选取货点和送货点、创建订单。扫码打开专用只读订单页，显示固定取送货点、骑手位置和状态。APP 导航去取货，点击已取货后导航去送货；网页距离随阶段切换。普通测试入口也可输入 16 位实测码。真实位置和模拟配送为两个独立场景。本次案例使用最新配套 Android SDK 与 JS alpha.38。

1. 配送展示：规划汽车路线，播放、暂停模拟配送，观察位置、线路、剩余沿路距离。模拟距离按返回的路线折线计算，不代表真实订单。
2. 商家选址：选择商家或收货入口，搜索/点击地图，编辑名称及地址，确认回填。回到配送展示重新算路。
3. 手机定位：获取一次定位或连续定位。显示实际坐标、测量时间、精度、速度与到收货点的直线距离；速度未知为 —。切换场景/进入后台时停止定位，不上传轨迹。
4. 坐标转换：选择 GCJ02 或 WGS84，输出带坐标系标签的 WGS84 坐标。不会把转换结果自动写入商家资料。

页面不创建生产订单、不保存生产商家，也不自动确认送达。H5 汽车路线预览不是 Android 原生导航页。商家/收货点与测试位置只保存在当前页面内存，刷新重置。

安卓实测数据由独立测试服务暂存 24 小时，服务端保留最新位置和最近最多 1000 个移动点。H5 每 2 秒接收完整快照；蓝线表示已走轨迹，距离为当前取货/送货阶段到目标点的直线距离，15 秒没有新定位会显示待更新。实测码是只读查看凭据，写入令牌只由安卓持有，不进入网页。

## 文件与配置

- index.html / app.css：响应式测试页面。
- app.js：直接调用已发布 SDK。
- SDK: ../../browser/ in the customer bundle; ../../javascript/browser/ in the source repository. Use shared compiled browser files, without source maps.
- config.json：`{"webKey":"你的 WEB Key"}`。只用已授权当前网页 Origin 的 WEB Key，不使用 SERVER Key。

入口通过 `load({key: config.webKey, serviceBaseUrl: location.origin, datasetId: 'town'})` 初始化。当前部署与地图服务同域；第三方独立域名接入时，把 serviceBaseUrl 改为 `https://map.sukha.cn`，并配置对应 WEB Key 的 Origin。

配送使用 `new sdk.DeliveryTrackingMap(container, {orderId})`，将平台完整快照传入 `update`；生产接入把模拟定时器替换为现有订单消息流。位置和距离保留真实测量/计算时间，sequence 由平台单调递增。

选址使用 `new sdk.DeliveryPlacePicker(...)`，监听 `confirm` 的 result，由平台自行保存。页面只在内存回填；浏览器定位使用 `sdk.Geolocation`，通过 SDK 公共接口取消并销毁。所有组件在页面退出时调用 destroy。

本机运行需提供 SDK 文件与本机 Origin 授权配置；不要直接双击 HTML，浏览器定位需要 HTTPS 或 localhost。

From the customer bundle root run `python -m http.server 8090 --bind 127.0.0.1`, then open `/examples/delivery-h5/`. From the repository root open `/sdk/examples/delivery-h5/`. Copy config.json.example to config.json and supply an Origin-bound WEB Key. The relay endpoint `/delivery-test-api/` must be provided by the host or a development reverse proxy; it is not part of the map SDK.
