QR 数据格式

QR 导入和 QR 数据格式

ArxSilex MapTools 中的 QR 码是用于紧凑应用数据的版本化交换格式。

更新日期:2026年5月28日

摘要

面向使用和开发的概览

本节概述 QR 码包含哪些内容、技术上如何生成,以及为什么导入在本地完成。

QR 内容

QR 码可能包含坐标、对象名称、备注、项目部分或群组信息;因此群组 QR 码属于机密信息。

技术兼容性

自定义工具只要遵守版本、大小限制、编码和验证规则,就可以生成 QR 码。

本地导入

该链接不是上传。服务器不会处理 payload;应用会在本地从 QR 链接读取数据。

URL 结构

QR 链接

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 应用链接按此路径注册。
文档 URLhttps://www.arxsilex.de/app/maptools/qr/index.html此网页文档以 QR 文件夹中的 index.html 提供。
旧版 schemeasmaptools://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 导入和 QR 数据格式

对象 QR 码使用短键以保持二维码较小。键本身仍是技术标识符。

含义字段
v架构版本integer
m标记i, n, inf, la, lo, ic, cl
ci, 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

群组

带类型的群组 payload

群组 QR 码使用带类型的 JSON payload。群组密钥属于机密信息。

type: group

包含 name、group_id、group_key、原点、颜色、描述和可选快捷消息。

type: objects

将对象数据包装在 objects 字段中。

type: group_with_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
}