0

我正在尝试从 TileMill (zoom/x/y) 生成的地图文件名中导出纬度/经度。

使用来自我正在使用的http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames的信息(PHP 实现)

$n = pow(2, $zoom);
$lon_deg = $x / $n * 360.0 - 180.0;
$lat_deg = rad2deg(atan(sinh(pi() * (1 - 2 * $y / $n))));
echo $lat_deg.','.$lon_deg;

从名为 zxy.png 的 maptile 计算。

计算返回的值与瓦片覆盖的区域无关。

一个示例是 7-36-70(牙买加),它返回值 16.875,61.6063963714(位于阿拉伯海)。

谁能发现哪里出了问题?

4

1 回答 1

0

$n 应该是 128,如果是 2**7。那么,这就是你的 $n 来的吗?

那么 $lon_deg 应该是 36/128*360 - 180,如果你假设正确的括号/优先级是 (36/128)*360-180,我认为这将是 -78.75。这看起来很接近牙买加......

于 2013-11-19T11:05:12.577 回答