export const Transform={
// 经度转化为地图像素
lonToxPixel:(lon:number,zoom:number,tileImageSize:number)=>(lon+180)*(tileImageSize<<zoom)/360,
// 纬度转化为地图像素
latToyPixel:(lat:number,zoom:number,tileImageSize:number)=>{
const sinY=Math.sin(lat*Math.PI/180)
const y=Math.log((1+sinY)/(1-sinY))
return ((tileImageSize/2)<<zoom)*(1-y/(2*Math.PI))
},
// 地图像素转化为经度
xPixelToLon:(xPixel:number,zoom:number,tileImageSize:number)=>xPixel*360/(tileImageSize<<zoom)-180,
// 地图像素转化为纬度
yPixelToLat:(yPixel:number,zoom:number,tileImageSize:number)=>{
const y=(1-yPixel/((tileImageSize/2)<<zoom))*2*Math.PI
const sinY=1-2/(Math.pow(Math.E,y)+1)
return Math.asin(sinY)*180/Math.PI
},
// 经度转瓦片x坐标
lonToXTile:(lon:number,zoom:number)=>Math.floor((lon+180)/360*(1<<zoom)),
// 纬度转瓦片y坐标
latToYTile:(lat:number,zoom:number)=>{
const temp=Math.PI*lat/180
return Math.floor((1-(Math.log(Math.tan(temp)+1/Math.cos(temp)))/Math.PI)*(1<<zoom)/2);
}
}
经纬度与地图像素和瓦片坐标之间的转换
最新推荐文章于 2023-08-01 17:49:53 发布