Answers:
数学描述如下:
http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/
…包括命令行实用程序的源代码和在线演示。
这也是非常简单的数学运算:
function tile2long(x,z) { return (x/Math.pow(2,z)*360-180); }
function tile2lat(y,z) {
var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));
}
请注意y轴上XYZ / Google与TMS之间的差异。
谷歌地图API V3为您提供所需的功能也通过
.fromPointToLatLng()
的map.getProjection()
。
这个OpenStreetMap Wiki页面也可能对其他语言有所帮助:
这是我的工作代码:
function tile2long(x,z) {
return (x/Math.pow(2,z)*360-180);
}
function tile2lat(y,z) {
var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));
}
var x = coord.x;
var y = coord.y;
var z = zoom;
var NW_long = tile2long(x,z);
var SW_long = tile2long(x,z);
var SW_lat = tile2lat(y+1,z);
var NE_long = tile2long(x+1,z);
var NE_lat = tile2lat(y,z);
var export_bbox = SW_long + ',' + SW_lat + ',' + NE_long + ',' + NE_lat;
var url_param = '&format=png&size=256,256&transparent=true&f=image&bboxSR=4326&imageSR=4326';
var url_layers =''
var root_url = 'https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/export?bbox=';
var tile_url = root_url + export_bbox + url_param + url_layers;