记录一下最近项目上遇到的一个需求,用坐标数据在地图上画出图形来,一个很简单的需求,只是返回的数据不是经纬度,要转换,比较感兴趣,所以记录一下
数据返回的是高斯克吕格投影坐标,openlayers不能直接使用,下面是转换代码
先定义需要转换的坐标并注册
// 定义投影坐标
Proj4.defs('EPSG:4527', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=GRS80 +units=m +no_defs')
// 注册 Proj4
register(Proj4)
const epsg4527 = getProjection('EPSG:4527')
const epsg4326 = getProjection('EPSG:4326')
然后使用openlayers的proj4里面的一个方法进行转换
let list = 返回的GeoJSON格式数据
list.features[0].geometry.coordinates[0].map(el => {
return transform([el[0], el[1]], epsg4527, epsg4326)
})
很简单的一个转换方法,使用到了proj4这个依赖去注册投影坐标,然后进行转换