polyline 编码器 / 解码器
把坐标编码为 Google polyline 字符串,或把它解码回 lat/lng 和 GeoJSON,就在你的浏览器中。你的路线留在你的设备上。
你粘贴的坐标和 polyline 字符串在你的浏览器本地完成编码和解码,绝不会被上传;你输入的任何内容都不会被存储在服务器上。
想在地图上看到这条路线?打开坐标地图查看器。
关于 polyline 编码器
这款 polyline 编码器和解码器完全在你的浏览器中处理 Google 的 Encoded Polyline Algorithm Format。在编码模式下,每行粘贴一对「lat, lng」——或一个 GeoJSON LineString——即可得到 Directions API 为一条路线返回的那种紧凑编码字符串。在解码模式下,粘贴一个编码后的 polyline,即可读回坐标列表,以及一个可直接投入地图使用的 GeoJSON LineString。一个精度开关在 5(Google Maps 默认)和 6(OSRM、Valhalla 和 Mapbox 使用)之间切换,而这正是解码后的路线落错位置的常见原因。polyline 把整条路径压进一个简短的 ASCII 字符串,因此当某个 API 给你一条编码路线、而你需要纯坐标(或反之)时,它非常实用。一切都在你的设备上计算,你粘贴的路线绝不会被上传。
功能特性
- 把一组 lat/lng 坐标编码为一个 Google Encoded Polyline 字符串
- 把一个 polyline 解码回坐标和一个等价的 GeoJSON LineString
- 双向都可切换精度 5(Google Maps)或 6(OSRM、Valhalla、Mapbox)
- 编码输入接受每行一对「lat, lng」,或一个 GeoJSON LineString / Feature
- 输出一个可直接粘贴进地图或 geojson.io 的 GeoJSON LineString
- 标记精度不匹配的解码,这是路线落错约 10 倍的经典原因
- 一键复制编码后的字符串、坐标列表或 GeoJSON
- 加载一个标准示例,在粘贴你自己的路线前先看清格式
如何使用 polyline 编码器
- 选择「编码」以把坐标变成 polyline,或选择「解码」以展开一个 polyline。
- 挑选精度 5(Google)或 6(OSRM/Valhalla)以匹配你的数据源。
- 粘贴坐标(每行一对「lat, lng」或一个 GeoJSON LineString),或一个编码后的 polyline。
- 在结果中读取编码后的字符串,或坐标列表和 GeoJSON LineString。
- 为你的地图、API 请求或数据文件复制任意输出。
示例
输入
38.5, -120.2
40.7, -120.95
43.252, -126.453
输出
_p~iF~ps|U_ulLnnqC_mqNvxq`@
来自 Google 文档的标准三点路线,以精度 5 编码。
常见错误与故障排除
- 解码后的路线发生偏移,或缩放到约十倍太远。 — 精度不匹配。Google 和 Google Maps 使用 5;OSRM、Valhalla 和 Mapbox 使用 6。把精度开关切换到与生成该字符串的那一方一致。
- 解码后的点看似合理,但地图把线画到了海里。 — polyline 和本工具先存纬度,但 GeoJSON 位置是 [longitude, latitude]。请原样使用 GeoJSON 输出,而不要自己交换这两个值。
- 解码时以「malformed polyline」(畸形 polyline)消息中止。 — 该字符串被截断,或复制时带了多余字符。请复制整个 polyline,并移除任何周围的引号或 JSON 转义,例如一个双重反斜杠。
常见问题
- 什么是 Google encoded polyline?
- 它是一条经纬度点路径的紧凑 ASCII 编码,由 Google 的 Encoded Polyline Algorithm Format 定义。Directions 和 Roads API 以这种方式返回路线,因为该字符串远比一整份坐标列表短,并且能解码回精确的各个点。
- 我的 polyline 该用精度 5 还是 6?
- 为 Google Maps 和 Google Directions API 使用 5,为 OSRM、Valhalla、GraphHopper 和 Mapbox 使用 6。精度 6 多保留一位小数,因此以 6 编码却以 5 解码的字符串会落错约十倍——请始终与创建该 polyline 的工具相匹配。
- 我如何把一个编码后的 polyline 转成 GeoJSON?
- 切换到「解码」,粘贴 polyline,工具便会在纯坐标列表旁输出一个 GeoJSON LineString Feature。该 GeoJSON 已使用 [longitude, latitude] 顺序,因此你可以把它直接粘贴进 geojson.io、Leaflet 或某个制图库。
- 我能把一个 GeoJSON LineString 编码成 polyline 吗?
- 可以。在编码模式下,你可以粘贴一个 GeoJSON LineString,或包裹它的一个 Feature 或 FeatureCollection,工具会读取其坐标并返回编码后的字符串。如果你没有 GeoJSON,也可以粘贴纯「lat, lng」行。
- 我在编码或解码时,路线数据会被发送到任何地方吗?
- 不会。编码和解码完全在你的浏览器中、使用标准算法运行,因此你粘贴的坐标和 polyline 都在你的设备上处理,绝不会被上传到服务器。
相关工具
- GeoJSON 查看器 — 校验 GeoJSON、在地图上预览,并查看要素与边界框摘要。
- GPX 转 GeoJSON — 在你的浏览器中双向转换 GPX 与 GeoJSON——GPS 轨迹、路线和航点始终留在你的设备上。
- 坐标转换器 — 在十进制度、DMS 与度分(DDM)之间双向转换经纬度。
- 经纬度地图 — 在 OpenStreetMap 地图上标注纬度和经度,拖动图钉或点击反读坐标,并复制 Google Maps 与 geo: 链接。
- GeoJSON 转 CSV — 将 GeoJSON 转为 CSV,或将 CSV 转回 GeoJSON——Point 要素变成纬度和经度列,全部在你的浏览器本地完成。
- WKT 转 GeoJSON — 在你的浏览器中双向转换 WKT(Well-Known Text)与 GeoJSON——粘贴 POINT、LINESTRING 或 POLYGON,你的几何数据始终在本地。
全部 ArrayKit 工具