当分析谷歌瓦片的时候会发现,在高纬度区域单位像素表示的经度跨度大,低纬度的跨度小,这时因为谷歌地图采用了非线性拉伸方法。具体原因还未深究,或许是因为低纬度需要表现更好的细节吧,先上一些代码:
经度到像素X值
double lngToPixel(double lng, int zoom) {
return (lng + 180) * (256 << zoom) / 360;
}
像素X到经度
double pixelToLng(double pixelX, int zoom) {
return pixelX * 360 / (256 << zoom) - 180;
}
纬度到像素Y
double latToPixel(double lat, int zoom) {
double siny = sin(lat * PI / 180);
double y = log((1 + siny) / (1 - siny));
return (128 << zoom) * (1 - y / (2 *