经纬度坐标转换成px_墨卡托坐标与经纬度转换

zoom为地图层级,最小zoom=0,此时瓦片总数量为1

X轴或Y轴的瓦片数量=2^zoom

瓦片总数量=2^zoom*2^zoom

每个瓦片像素为256*256

如:当zoom=2时,X轴Y轴的瓦片数量都为2^zoom=4,瓦片总数量=2^zoom*2^zoom=16,

XY轴的像素长度=4*256=1024

/*

* 当zoom=2时

* X轴或Y轴的瓦片数量=2^zoom=4

* 每个瓦片的像素为256*256

* X轴或Y轴的像素长度长度=256*2^zoom=256*4=1024

*

* 瓦片总数量=2^zoom*2^zoom=4*4=16

*

* 85.05112877980659 => -7.958078640513122E-13(约等于0)

* 85.05 => 0.03721464739555813

* 85 => 1.6772247409192573

* 60 => 297.36923224116083

* 45 => 368.3584378011699

* 30 => 422.4770169430887

* 北纬

* 0 => 512.0

* 南纬

* -30 => 601.5229830569114

* -45 => 655.6415621988301

* -60 => 726.6307677588392

* -85 => 1022.3227752590808

* -85.05 => 1023.9627853526044

* -85.05112877980659=>1024.000000000001

*/

double v = latToPixel(0, 2);//

double y1 = Math.ceil(v / 256);

System.out.println("高德1 "+"Y轴坐标="+v+" 瓦片编号y="+y1);

double v1 = latToPixel2(0, 2);

double y2=Math.ceil(v1 / 256);

System.out.println("高德2 "+"Y轴坐标="+v1+" 瓦片编号y="+y2);

//

/**

* 高德地图瓦片坐标与Google Map、Open Street Map相同

* 纬度到墨卡托像素Y

*/

public double latToPixel(double lat, int zoom) {

double siny = Math.sin(lat * Math.PI / 180);

double y = Math.log((1 + siny) / (1 - siny));

return (128 << zoom) * (1 - y / (2 * Math.PI));

}

/**

* 高德地图瓦片坐标与Google Map、Open Street Map相同

* 纬度到墨卡托像素Y

*/

public double latToPixel2(double lat, int zoom) {

double v = Math.tan(lat * Math.PI / 180) + 1 / Math.cos(lat * Math.PI / 180);

double v1 = (1 - Math.log(v) / (Math.PI)) * Math.pow(2, zoom-1)*256;

return v1;

}

理解墨卡托投影原理

国内主要地图瓦片坐标系定义及计算原理

墨卡托坐标以及 墨卡托坐标转经纬度

谷歌瓦片像素点与经纬度的对应关系

Slippy map tilenames

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值