技术博客
坐标系转换:5 分钟接入,从第一条 WGS84→GCJ02 结果开始

坐标系转换:5 分钟接入,从第一条 WGS84→GCJ02 结果开始

作者: 万维易源
2026-08-27
坐标系转换经纬度转换WGS84GCJ02快速接入
# 坐标系转换:5 分钟接入,从第一条 WGS84→GCJ02 结果开始 > 接口:坐标系转换(apiCode=1252,接入点 1「坐标系转换」)· 免费 · 请求方式 POST/GET · 返回 JSON · 适用人群:新注册用户、初级开发者 · 阅读时间:约 5 分钟 ## TL;DR - 坐标系转换支持 WGS84 / GCJ02(火星坐标系)/ BD09(百度坐标系)三者**互相转换**,免费、注册即可调用。 - 一次调用只需 3 个必填参数:`from`、`to`、`location`(经纬度,最多 20 个点)。 - 返回 `resultList` 里每个点的 `output` 就是转换后的坐标(数组,下标 0=经度、1=纬度)。 ## Why 你在做地图、定位、轨迹、外卖/出行类功能时,几乎一定会遇到"坐标对不上"的问题:手机 GPS 拿到的是 WGS84,但高德、腾讯地图用的是 GCJ02,百度用的是 BD09。直接把 GPS 坐标往高德上打点,点位会偏移几百米。坐标系转换接口就是把这个"翻译"过程变成一行 API 调用。 本篇目标:让你在 5 分钟内拿到第一个真实可用的转换结果,跑通后其他场景只是换参数。 ## What 前置条件: - 已注册 ShowAPI 账号,并获取 AppKey([AppKey 管理](https://www.showapi.com/console#/myApp))。 - 本接口为**免费服务**,注册后默认可调用,设有使用档位限制(可用积分兑换更高档位),具体档位以[官方档位说明](https://www.showapi.com/island/free-api)为准。 接口速览: | 项 | 值 | |----|----| | 接口 / 接入点 | 坐标系转换 · apiCode=1252 · 接入点 1 | | 接口地址 | `https://route.showapi.com/1252-1?appKey={your_appKey}` | | 请求方式 | POST / GET | | 鉴权 | URL query 参数 `appKey` | | 返回格式 | JSON | | 更新频率 | 每次查询都返回最新数据(无状态实时计算) | | 集成能力 | MCP(`showapi-mcp-1252`)、OpenAPI 3.0(`/openapi/market/1252.yaml`) | ## How 以"把 GPS 的 WGS84 坐标 `113.194329,23.234704` 转成高德/腾讯用的 GCJ02"为例。 **步骤 1:准备 AppKey**,替换下面代码里的 `YOUR_APPKEY`。 **步骤 2:发起转换请求**,三个必填参数: - `from`:源坐标系,取值 `WGS84` / `GCJ02` / `BD09` - `to`:目标坐标系,取值同上 - `location`:源坐标,格式 `经度,纬度`,多个点用 `;` 隔开,**最多 20 个** ### Python(requests) ```python import requests app_key = "YOUR_APPKEY" url = "https://route.showapi.com/1252-1" params = {"appKey": app_key} data = { "from": "WGS84", "to": "GCJ02", "location": "113.194329,23.234704", } try: resp = requests.post(url, params=params, data=data, timeout=10) resp.raise_for_status() body = resp.json().get("showapi_res_body", {}) if body.get("ret_code") != 0: print("业务失败:", body) else: for item in body.get("resultList", []): print("输入:", item["input"], "→ 输出:", item["output"]) except Exception as e: print("请求异常:", e) ``` ### cURL ```bash curl -X POST "https://route.showapi.com/1252-1?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "from=WGS84&to=GCJ02&location=113.194329%2C23.234704" ``` ### Node.js(fetch) ```javascript const appKey = "YOUR_APPKEY"; const url = `https://route.showapi.com/1252-1?appKey=${appKey}`; const body = new URLSearchParams({ from: "WGS84", to: "GCJ02", location: "113.194329,23.234704" }); const controller = new AbortController(); const timer = setTimeout(() => controller.abort(), 10000); try { const resp = await fetch(url, { method: "POST", headers: { "content-type": "application/x-www-form-urlencoded" }, body, signal: controller.signal, }); const json = await resp.json(); const res = json.showapi_res_body; if (res.ret_code !== 0) { console.log("业务失败:", res); } else { res.resultList.forEach(it => console.log("输入:", it.input, "→ 输出:", it.output)); } } catch (e) { console.log("请求异常:", e); } finally { clearTimeout(timer); } ``` **步骤 3:看输出**。`output` 即为转换后的 GCJ02 坐标。 ## 返回示例与解析 ```json { "showapi_res_code": 0, "showapi_res_error": "", "showapi_res_id": "ce135f6739294c63be0c021b76b6fbff", "showapi_res_body": { "to": "GCJ02", "ret_code": 0, "resultList": [ { "input": [113.194329, 23.234704], "output": [113.19971018888167, 23.232115136208677] } ], "from": "WGS84" } } ``` | 字段 | 类型 | 说明 | |------|------|------| | `showapi_res_body.from` | String | 源坐标系名称 | | `showapi_res_body.to` | String | 目标坐标系名称 | | `showapi_res_body.resultList[]` | Object[] | 转换结果列表 | | `resultList[].input` | 数组 | 输入点,下标 0=经度、1=纬度 | | `resultList[].output` | 数组 | 转换后点,下标 0=经度、1=纬度 | | `showapi_res_body.ret_code` | Number | 业务成功标识(示例为 0) | > 注:文档参数表中 `input`/`output` 类型标注为 String,但描述与返回示例均为**数组**,以数组为准。 ## 进阶 / 边界 - **最多 20 个点**:单次请求 `location` 最多带 20 个坐标,超出需分批(见[坐标系转换(批量):一次性转换最多 20 个 GPS 点位](https://www.showapi.com/guides/coord-convert-batch-1252))。 - **经纬度范围**:经度 -180~180,纬度 -90~90,**经度在前、纬度在后**。 - **免费但有档位**:突发大调用量建议做本地缓存(见[免费接口的成本管控:坐标系转换的本地缓存与批量合并策略](https://www.showapi.com/guides/coord-convert-cache-1252))。 ## FAQ **Q1:这个接口真的免费吗?** A:是免费服务,注册后默认可调用,但设有使用档位限制(防滥用),可用平台积分兑换更高调用档位;具体档位以[官方档位说明](https://www.showapi.com/island/free-api)为准。 **Q2:AppKey 在哪获取?** A:登录后到[AppKey 管理](https://www.showapi.com/console#/myApp)创建并复制,替换代码里的 `YOUR_APPKEY`。 **Q3:一次能转换几个点?** A:接入点 1 单次请求最多 20 个点,用 `;` 分隔。 **Q4:经纬度顺序写反了会怎样?** A:接口按"经度,纬度"解析,写反会导致坐标落在错误位置;务必经度在前。 **Q5:返回里 `ret_code` 不是 0 怎么办?** A:文档仅给出成功样例(ret_code=0),未枚举失败错误码;出现非 0 时以实际返回内容为准排查(多为参数取值/格式问题)。 ## 相关能力 / 下一步阅读 - [坐标系转换:返回结构与 ret_code 全解(含批量 resultList 字段)](https://www.showapi.com/guides/coord-convert-response-1252) - [WGS84 / GCJ02(火星坐标)/ BD09 到底是什么?为什么必须转换?](https://www.showapi.com/guides/coord-convert-concepts-1252) - [高德/腾讯/百度/Google 地图坐标互通:坐标系转换在地图集成中的全链路设计](https://www.showapi.com/guides/coord-convert-map-platform-1252) - **本系列共 12 篇**:查看[坐标系转换指南总目录](https://www.showapi.com/guides/coord-convert-guides-1252)