- 废话不多说 直接上代码
getUTMCRSCode(latitude, longitude) {
let zoneNumber = Math.floor((longitude + 180) / 6) + 1;
let hemisphere = latitude >= 0 ? '326' : '327';
let utmCRSCode = `EPSG:${hemisphere}${String(zoneNumber).padStart(2, '0')}`;
return { zoneNumber, utmCRSCode };
}
convertToUTM(latitude, longitude, zoneNumber, utmCRSCode) {
proj4.defs('EPSG:4326', `+proj=longlat +datum=WGS84 +no_defs`);
proj4.defs(utmCRSCode, `+proj=utm +zone=${zoneNumber} +datum=WGS84 +units=m +no_defs`);
const [utmX, utmY] = proj4('EPSG:4326', utmCRSCode, [longitude, latitude]);
return [utmX, utmY];
}
convertToWGS84(utmX, utmY, zoneNumber, utmCRSCode) {
proj4.defs(utmCRSCode, `+proj=utm +zone=${zoneNumber} +datum=WGS84 +units=m +no_defs`);
proj4.defs('EPSG:4326', '+proj=longlat +datum=WGS84 +no_defs');
const [longitude, latitude] = proj4(utmCRSCode, 'EPSG:4326', [utmX, utmY]);
return [latitude, longitude];
}