JS不同地图坐标系经纬度转换(天地图、高德地图、百度地图、腾讯地图)
在JavaScript中,不同的地图服务提供商使用的坐标系是不同的,要实现不同坐标系之间的转换,通常需要使用专门的库,比如proj4
。以下是使用proj4
进行不同地图坐标系转换的示例代码:
首先,安装proj4库:
npm install proj4
然后,使用proj4进行不同坐标系转换的代码:
const proj4 = require('proj4');
// 注册坐标系
proj4.defs('EPSG:4326', '+title=Long/lat (WGS 84) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees');
proj4.defs('EPSG:3857', '+title=Plate Carre (WGS 84) +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +no_defs');
// 天地图坐标系转换到高德地图坐标系
const tianDiTuToGaodeMap = (lat, lng) => {
const tianDiTu = proj4('EPSG:4326', 'EPSG:3857', [lng, lat]);
return {
lng: tianDiTu[0],
lat: tianDiTu[1]
};
};
// 高德地图坐标系转换到百度地图坐标系
const gaodeMapToBaiduMap = (lat, lng) => {
const gaode = proj4('EPSG:4326', 'EPSG:3857', [lng, lat]);
return {
lng: gaode[0],
lat: gaode[1]
};
};
// 腾讯地图坐标系转换到百度地图坐标系
const qqMapToBaiduMap = (lat, lng) => {
// 腾讯地图和百度地图使用的是同一个坐标系,不需要转换
return {
lng,
lat
};
};
// 示例转换操作
const tianDiTuCoords = { lat: 39.99, lng: 116.40 };
const gaodeMapCoords = tianDiTuToGaodeMap(tianDiTuCoords.lat, tianDiTuCoords.lng);
const baiduMapCoords = qqMapToBaiduMap(gaodeMapToBaiduMap(gaodeMapCoords.lat, gaodeMapCoords.lng).lat, gaodeMapToBaiduMap(gaodeMapCoords.lat, gaodeMapCoords.lng).lng);
console.log(baiduMapCoords); // 输出转换到百度地图坐标系的坐标
在这个例子中,我们定义了从WGS 84经纬度坐标系(EPSG:4326)到Web 坐标系(EPSG:3857,即Spherical Mercator Projection)的转换。然后,我们定义了三个函数,分别用于天地图坐标系转换到高德地图坐标系,高德地图坐标系转换到百度地图坐标系,以及腾讯地图坐标系转换到百度地图坐标系。最后,我们通过链式转换天地图坐标系的坐标到达了百度地图坐标系。
注意:实际应用中,每个地图服务提供商可能还会使用自己独特的坐标系,上述代码只是一个示例,具体转换还需参考各自
评论已关闭