Openlayers源码浅析

248 阅读1分钟

墨卡托投影坐标系(EPSG:3857):

椭球体半径R = 6378137,单位为米

计算出半周长Math.PI * R = 20037508.342789244

那么投影坐标下全幅实地地图范围是 [ -20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244 ]

进而求出在墨卡托投影坐标系全幅实地地图的高(height)为40075016.68557849,长(width)为40075016.68557849(由全幅实地地图范围求得,计算结果会带有误差)

地图瓦片所占像素为256*256,瓦片尺寸tileSize

即实地地图最大分辨率计算公式为: maxResolution = Math.max(width/tileSize,height/tileSize), maxResolution =156543.03392804097, 即屏幕每个像素能代表的实地最大距离

openlayers地图最大层级为n,设当前层级为z,当前层级的分辨率求解公式为:resolution = maxResolution / Math.pow(2, z),z<=n