前言
二维地图里,可能用到的EPSG(The European Petroleum Survey Group,欧洲石油调查组织)
坐标系如下所示:
- 4326
- 4490
- 3857
- 900913
如何将上面的不同坐标系抽取到同一个对象里呢?
正文
代码如下所示:
/**
* 坐标系
* @typedef {Object} CoordinateReferenceSystem
* @property {number} CODE 坐标系编码
* @property {string} EPSG epsg编码
*/
/**
* 当前支持的坐标系枚举
* @typedef {Object} CRS
* @property {CoordinateReferenceSystem} EPSG3857 WebMercator投影坐标系
* @property {CoordinateReferenceSystem} EPSG4326 WGS84坐标系
* @property {CoordinateReferenceSystem} EPSG4490 CGCS2000坐标系
*
*/
const CRS = {};
CRS.EPSG4326 = {
CODE: 4326,
EPSG: 'EPSG:4326'
}
CRS.EPSG4490 = {
CODE: 4490,
EPSG: 'EPSG:4490'
}
CRS.EPSG3857 = {
CODE: 3857,
EPSG: 'EPSG:3857'
}
CRS.EPSG900913 = {
CODE: 900913,
EPSG: 'EPSG:900913'
}
export default CRS;
export function equalsCRS(crs1, crs2) {
if (validateCRS(crs1) && validateCRS(crs2)) {
if (crs1.CODE === crs2.CODE) {
return true;
}
}
return false;
}
export function validateCRS(crs) {
if (crs === undefined || crs == null || Object.prototype.toString.call(crs) != '[object Object]') {
return false;
}
for (let key in CRS) {
if (CRS[key].CODE === crs.CODE) {
return true;
}
}
return false;
}