邮编区域互查 + 地图标点:把省市区数据落到地图上
邮编查询邮编区域互查ShowAPI免费接口API教程 # 邮编区域互查 + 地图标点:把省市区数据落到地图上
> 邮编区域互查(apiCode=1917)· 免费接口 · POST/GET · JSON · 初级~中级开发者 · 约 9 分钟
## 核心要点
- 邮编区域互查返回的是**行政区划文本**(省/市/区/街道),**本身不含经纬度**,无法直接标点。
- 落地到地图需两步:① 调接口拿行政区划;② 用外部地理编码把行政区划转成经纬度,再标点。
- 本文给出「接口取数 + 外部地理编码 + 前端标点」的可运行思路,地理编码服务以公开方案示意。
## Why:拿到地区名只是第一步
做网点分布、配送范围、用户地域分析时,最终要的是「在地图上画出来」。邮编区域互查负责把邮编/地区补全成标准行政区划,经纬度转换交给专业的地理编码服务,两者配合即可完成可视化。
## What:接口速览
| 项 | 说明 |
|----|------|
| 接口 | 邮编区域互查(apiCode=1917),建议用接入点1 取完整省市区 |
| 返回 | 行政区划文本(province/city/area/county),无坐标 |
| 外部依赖 | 地理编码服务(将「省+市+区」转为经纬度) |
## How:取行政区划 → 地理编码 → 标点
### 第一步:调接口取地区(Python)
```python
import requests
def get_region(app_key, code):
r = requests.post("https://route.showapi.com/1917-1",
params={"appKey": app_key, "code": code}, timeout=10)
data = r.json()
b = data.get("showapi_res_body", {})
if b.get("ret_code") != 0:
return None
return b.get("contentlist", [])[0] if b.get("contentlist") else None
region = get_region("YOUR_APPKEY", "362504")
# region: {"province":"福建省","city":"泉州市","area":"德化县",...}
```
### 第二步:地理编码(示意,替换为你的地理编码服务)
```python
# 伪代码:调用地理编码服务将「福建省 泉州市 德化县」转为经纬度
# 不同服务 API 不同,下面仅为结构示意,非特定服务密钥
def geocode(province, city, area):
addr = f"{province}{city}{area}"
# resp = requests.get(GEO_API, params={"address": addr, "key": GEO_KEY})
# return resp.json()["location"] # {"lng": ..., "lat": ...}
raise NotImplementedError("请接入你的地理编码服务")
```
### 第三步:前端标点(示意)
```javascript
// 拿到 {lng, lat} 后在地图 SDK 上 addMarker
map.addMarker({ lng: point.lng, lat: point.lat, title: `${region.area}` });
```
## 返回示例与解析
接口返回的是行政区划文本(见接入点1 字段),经纬度需外部地理编码获得。本接口**不提供坐标系/坐标字段**,请勿在代码里寻找 `location`/`lng`/`lat`。
## 进阶/边界
- **坐标从哪来**:接口不含坐标,必须接地理编码服务;注意不同地图的坐标系(如 GCJ-02)差异。
- **批量标点**:多个邮编先批量查、合并去重后再统一地理编码,减少调用。
- **缓存**:行政区划与地理编码结果都较稳定,建议两层缓存(见《缓存策略》)。
- **如实说明边界**:本文不宣称接口返回坐标,地理编码为外部依赖。
## FAQ
**Q1:接口返回经纬度吗?**
不返回,只有行政区划文本,坐标需外部地理编码。
**Q2:用哪个地理编码服务?**
任意支持「地址→经纬度」的公开服务均可,按你的项目选型。
**Q3:坐标系要注意什么?**
国内地图常用 GCJ-02,跨服务转换时注意对齐,避免偏移。
**Q4:能直接画热力图吗?**
可以,先聚合成点再按密度渲染,地理编码是前提。
**Q5:邮编对应多个街道怎么标点?**
取需要的粒度(如区一级)作一个标记,或逐条标点。
## 相关能力 / 下一步阅读
- [邮编区域互查·邮编查地区(接入点1)实战](https://www.showapi.com/guides/postcode-zip-to-region-1917)
- [免费接口如何设计缓存策略](https://www.showapi.com/guides/postcode-cache-1917)
- [邮编区域互查返回字段全解](https://www.showapi.com/guides/postcode-response-fields-1917)
- **本系列共 12 篇**:查看[邮编区域互查指南总目录](https://www.showapi.com/guides/postcode-guides-1917)