在 JavaScript 中,使用 proj4
库进行坐标系转换是一个非常常见的操作。proj4
是一个支持多种坐标系的 JavaScript 库,提供了从一种坐标系到另一种坐标系的转换功能。
以下是使用 proj4
进行坐标系转换的基本步骤:
1. 安装 proj4
你可以通过 npm 或直接引入 CDN 使用 proj4
。
通过 npm 安装:
npm install proj4
通过 CDN 引入:
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.8.1/proj4.js"></script>
2. 示例:WGS84 转换为 Web Mercator
WGS84
是一个全球通用的地理坐标系(经纬度),而 Web Mercator
通常用于网络地图(比如 Google Maps、OpenStreetMap)。
以下是代码示例:
// 导入 proj4 (如果通过 CDN 引入,则不需要这行代码)
const proj4 = require('proj4');
// 定义坐标系
const WGS84 = 'EPSG:4326'; // WGS84 坐标系
const WebMercator = 'EPSG:3857'; // Web Mercator 坐标系
// 定义一个点的经纬度
const point = [116.397128, 39.916527]; // 北京天安门经纬度
// 转换坐标
const convertedPoint = proj4(WGS84, WebMercator, point);
console.log('转换后的坐标:', convertedPoint);
3. 自定义坐标系
如果你需要转换到某个自定义坐标系,可以通过 proj4
的 proj4.defs
定义。
示例:定义一个 CGCS2000 坐标系
// 定义 CGCS2000 (EPSG:4490)
proj4.defs("EPSG:4490", "+proj=longlat +datum=CGCS2000 +no_defs");
// 从 WGS84 转换到 CGCS2000
const point = [116.397128, 39.916527]; // 北京天安门经纬度
const convertedPoint = proj4('EPSG:4326', 'EPSG:4490', point);
console.log('CGCS2000 坐标:', convertedPoint);
4. 扩展:绑定坐标文件
如果你需要加载自定义的 .prj
或其他坐标文件,可以结合 proj4
和第三方工具(如 proj4leaflet
)实现。
5. 常见 EPSG 代码对照表
坐标系名称 | EPSG 代码 |
---|---|
WGS84 (经纬度) | EPSG:4326 |
Web Mercator | EPSG:3857 |
CGCS2000 | EPSG:4490 |
UTM 坐标系 | EPSG:326xx (北半球),EPSG:327xx (南半球) |