地图投影计算方式:
3857: 地理范围为[-20037508.34,-20037508.34,20037508.34,20037508.34]
分辨率的计算公式为 res =((20037508.34 - (-20037508.34)) / 256) / Math.pow(2, z)
4326: 地理范围为[-180, -90,180,90]
分辨率的计算公式为 res =((180 - (-180)) / 256) / (Math.pow(2, (z + 1)))
地图切片
- 瓦片大小 一般宽高都为 256 或者 512
- 地图原点:一般的xyz 地图都是以左上角为起点, TMS切片是以左下角为起点
DPI
栅格化地图,一般用来表示英寸显示多少像素,表示图形的清晰度, 一般为96
矢量地图不存在
瓦片相关的计算
- 例如谷歌地图的一些常量
const tileExtent = [-20037508.34,-20037508.34,20037508.34,20037508.34];
const tileOrigin = [-20037508.34,20037508.34];
const tileSize = 256;
- 计算xyz
// 计算经纬度100, 39在8级时的行列号
var lonlat = [100, 39];
var xy = proj(lonlat, 'EPSG:4326', 'EPSG:3857');// [11131949.079327358, 4721671.572580107]
var res8 = ((20037508.34 - (-20037508.34)) / tileSize ) / Math.pow(2, 8); // 611.4962261962891
var size = res8 * 256;// 4891.9698095703125
var x = Math.floor((xy[0] - tileOrigin[0]) / size); //6371
var y = Math.floor((tileOrigin[1] - xy[1]) / size); //3130
- 计算切片的范围
// 计算8级,行列号为100, 100的切片范围
var res8 = ((20037508.34 - (-20037508.34)) / tileSize ) / Math.pow(2, 8); // 611.4962261962891
var size = res8 * 256;// 4891.9698095703125
var xmin = 100 * size + tileOrigin[0]; //-19548311.35904297
var xmax = (100 + 1) * size + tileOrigin[0]; //-19543419.3892334
var ymin = tileOrigin[1] - (100 + 1) * size; //19543419.3892334
var ymax = tileOrigin[1] - 100 * size; //19548311.35904297










网友评论