得鹿梦鱼 得鹿梦鱼

地理坐标与屏幕坐标间的转换原理

地图本身是拥有坐标的,一般可以大致分为平面坐标和经纬度坐标,在这里我们统称为地理坐标

转换前提

  1. 知道屏幕的最左上角所对应的真实的地理坐标(screenGeoBounds.left, screenGeoBounds.top)。
  2. 知道此时的地图所在级别上每个瓦片所对应的实际地理长度sliceLevelLength。
  3. 知道瓦片的大小,即一个瓦片所拥有的屏幕像素tileSize。

转换公式

屏幕坐标转换为地理坐标

geoXY.x = screenGeoBounds.left + screenX * sliceLevelLength / tileSize;

geoXY.y = screenGeoBounds.top - screenY * sliceLevelLength / tileSize;

地理坐标转换为屏幕坐标

screenXY.x = geoX - screenGeoBounds.left/sliceLevelLength/ tileSize;

screenXY.y = screenGeoBounds.top - geoY/sliceLevelLength/ tileSize;