QR 内容
QR 码可能包含坐标、对象名称、备注、项目部分或群组信息;因此群组 QR 码属于机密信息。
QR 数据格式
ArxSilex MapTools 中的 QR 码是用于紧凑应用数据的版本化交换格式。
更新日期:2026年5月28日
摘要
本节概述 QR 码包含哪些内容、技术上如何生成,以及为什么导入在本地完成。
QR 码可能包含坐标、对象名称、备注、项目部分或群组信息;因此群组 QR 码属于机密信息。
自定义工具只要遵守版本、大小限制、编码和验证规则,就可以生成 QR 码。
该链接不是上传。服务器不会处理 payload;应用会在本地从 QR 链接读取数据。
URL 结构
QR 码使用已验证的 HTTPS 应用链接。数据块位于片段符号之后。
https://www.arxsilex.de/app/maptools/qr#d=<base64url-json>
# 后面的部分通常不会发送到 Web 服务器。因此同一链接既可作为应用链接,也可回退到此说明页。
隐私
QR 码可能包含坐标、对象名称、备注、项目部分或群组信息。
QR 数据在本地处理。本网站不会解码或保存 payload。
位置和项目对象可能属于个人数据。只应与合适的接收者分享 QR 码。
群组 QR 码包含群组密钥。扫描者可以加入群组或导入群组数据。
技术规范
当前记录的是版本 1。较新的版本可能会被旧版应用拒绝。
| 项目 | 值 | 说明 |
|---|---|---|
| 当前 HTTPS 应用链接 | https://www.arxsilex.de/app/maptools/qr#d=<payload> | 路径末尾没有斜杠;Android 应用链接按此路径注册。 |
| 文档 URL | https://www.arxsilex.de/app/maptools/qr/index.html | 此网页文档以 QR 文件夹中的 index.html 提供。 |
| 旧版 scheme | asmaptools://qr?v=1&d=<payload> | 用于旧版或外部扫描器的兼容格式。 |
| Payload 编码 | Base64URL, UTF-8 JSON | 无 padding 的 URL 安全 Base64;内容为 UTF-8 JSON。 |
| 架构版本 | v: 1 | 小于 1 的版本无效;较新版本可能被拒绝。 |
| Payload 限制 | 2,200 bytes | 用于可靠生成和解码 QR 的保守限制。 |
| 传入 URI 上限 | 64 KiB | 传入 deep link 的硬性上限。 |
| QR 渲染 | ZXing QR, error correction M, 512 px | 应用会渲染 512 px QR 位图,并可放置小的应用标志。 |
Schema
对象 QR 码使用短键以保持二维码较小。键本身仍是技术标识符。
| 键 | 含义 | 字段 |
|---|---|---|
| v | 架构版本 | integer |
| m | 标记 | i, n, inf, la, lo, ic, cl |
| c | 圆 | i, n, la, lo, r, cl, sc, fc |
| d | 距离 | i, n, la, lo, ea, eo, cl |
| b | 方位/方向 | i, n, la, lo, bg, ln, iv, bc, cl |
| a | 区域 | i, n, pts, cl, sc, fc |
| r | 路线 | i, n, pts, cl |
群组
群组 QR 码使用带类型的 JSON payload。群组密钥属于机密信息。
包含 name、group_id、group_key、原点、颜色、描述和可选快捷消息。
将对象数据包装在 objects 字段中。
组合群组资料和可选对象。应用可导入群组、对象或两者。
验证
应用在导入前检查 QR 数据,并拒绝无效几何或过大的数据。
纬度 -90 到 90,经度 -180 到 180。导出的坐标四舍五入到 5 位小数。
ID 必须大于 0。路线至少需要 2 个不同点,区域至少需要 3 个不同点。
方位 0 到 360 度,校正 -180 到 180 度,长度和间隔最多 1,000 km。
JSON
示例为 Base64URL 编码前的内容。真实 QR 链接会把编码后的 JSON 放在 #d=... 中。
{
"v": 1,
"m": [
{"i":1,"n":"Start","la":48.13715,"lo":11.57612,"ic":"PIN"}
]
}{
"v": 1,
"type": "group",
"name": "Team Alpha",
"group_id": 123456,
"group_key": "shared-secret",
"originLat": 48.13715,
"originLon": 11.57612
}