> **本文回答**：vjmap / vjmapext 所有坐标相关概念的入口和索引。
> 跨 SDK（含 vjmap3d 世界坐标、vjcad WCS/UCS）的坐标空间决策、覆盖物该传哪个空间的坐标、查询结果字段坐标语义与常见反模式，本目录已收录相关结论精华。

# 坐标转换总览

## 核心概念一张图

```
   CAD 几何坐标 (笛卡尔，真实数值，单位米)
        │
        │   prj.toLngLat  /  map.toLngLat
        ▼
   渲染经纬度 (vjmap 底层 WebGL 渲染用，范围 -180..180, -85.0511..85.0511)
        │
        │   仅当底图是互联网地图时，此经纬度才有地理含义
        │
        ▼
   实际地理坐标 (WGS84 / GCJ02 / BD09)
```

## 子项索引

| 子文件 | 回答什么 |
|---|---|
| [concepts](concepts.md) | 几何坐标 / 渲染经纬度 / 真实经纬度 / 墨卡托 / UCS / WCS / 四参数的心智模型 + 空间判断速查 |
| [projection-api](projection-api.md) | `GeoProjection` / `LnglatProjection` / `map.toLngLat` / `fromLngLat` / `project` / `unproject` / 长度换算 API 一览 + 原地修改陷阱 |
| [overlay-coords](overlay-coords.md) | **覆盖物坐标矩阵**：Marker/Symbol/GeoJSON 吃渲染经纬度，CircleFill/MarkerCluster/DivOverlay/SvgOverlay 吃 CAD 坐标 |
| [query-coords](query-coords.md) | **查询结果字段坐标语义**：`.geom`=渲染经纬度 / `.geojson`=原始墨卡托或 CAD / `envelop`=墨卡托 WKT / `points`·`bounds`=CAD；`includegeom`/`realgeom`/`toMapCoordinate` 行为 |
| [gis-transforms](gis-transforms.md) | WGS84 / GCJ02 / BD09 / EPSG 之间互转（`vjmap.transform.convert` / `svc.cmdTransform` / proj4） |
| [internet-basemap-align](internet-basemap-align.md) | 互联网底图（天地图 / 高德 / 百度）上叠加 CAD 的自动/四参数对齐；`srs`/`crs`/`tileCrs` 三 API 语义差异 |
| [cad-mapper](../../../vjmapext/references/coord/cad-mapper.md) | mapext `CoordMapper` 的 API + 实体"投影源空间"坐标规则 + 查询→实体管线 + fx 坐标字段 |
| [cad-epsg](cad-epsg.md) | 如何从 CAD 图的坐标值反推它属于哪个 EPSG（北京 54 / 西安 80 / CGCS2000 + 三度带/六度带、带号/不带号变体） |

## 四条总则

1. **渲染经纬度是底层绘制用的坐标**：只有以互联网地图为底图时才是真正的经度纬度；以 CAD 为底图时只是用来解决"大坐标数值超出渲染器可处理范围"的技术需要。
2. **几何计算用 CAD 坐标，绘制时转经纬度**：相交、插值、偏移等非线性运算若在经纬度空间做会累计误差。
3. **保存到后台必须用 CAD 坐标**：CAD 图可能因后续更新范围发生变化，经纬度会对不上；CAD 坐标永远精确。
4. **`map.attach(svc, prj)` 之后，`map.toLngLat = prj.toLngLat`**：两者可互换使用。

## 主题级高频陷阱

1. **把渲染经纬度当真实经纬度打印/上报** → 永远不对，因为它是 CAD 范围映射的结果。见 [concepts](concepts.md)。
2. **高德 / 百度上叠 CAD 画面整体偏移** → GCJ02/BD09 加偏未做或 EPSG 选错。见 [internet-basemap-align](internet-basemap-align.md)。
3. **同一坐标被转两次**：`map.toLngLat` 输出再喂给 `toLngLat`，或已转 GCJ02 的坐标再走一遍 WGS84→GCJ02 → 双重偏移。每个变量记清当前所在坐标系。
4. **覆盖物传错坐标空间**（最高频）→ Marker/GeoJSON 要渲染经纬度、CircleFill/MarkerCluster 要 CAD 坐标；查 [overlay-coords](overlay-coords.md) 矩阵。
