将图块的 xyz 坐标转换为 longitude/latitude
Convert xyz coordinate of a tile to longitude/latitude
我想使用 openlayers 制作地图,但以独特的方式将其居中。例如,我有一个 z/x/y 坐标为 12/2045/-1362,如何将其转换为 longitude/latitude?这与此完全相反:How to get X Y Z coordinates of tile by click on Leaflet map
我很难理解上面link的逻辑并将其反转。我希望这里有人对此有经验或现成的公式。谢谢
稍后我将这样渲染我的地图中心:
var z = 12;
var x = 2045;
var y = -1362;
function convertXYZtoCoor(z, x, y) {
// code here
return [lng, lat];
}
var coor = convertXYZtoCoor(z, x, y);
var view = new ol.View({
center: ol.proj.transform(
[coor[0], coor[1]], 'EPSG:4326', 'EPSG:3857'),
zoom: z
});
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: view
});
希望我的问题得到更多的理解谢谢。
编辑:添加代码
var tileExtent = function(tileCoord){
var z = tileCoord[0];
var x = tileCoord[1];
var y = tileCoord[2];
var tileGridOrigin = tileGrid.getOrigin(z);
var tileSizeAtResolution = tileGrid.getTileSize(z) * tileGrid.getResolution(z);
return [
tileGridOrigin[0] + tileSizeAtResolution * x,
tileGridOrigin[1] + tileSizeAtResolution * y,
tileGridOrigin[0] + tileSizeAtResolution * (x + 1),
tileGridOrigin[1] + tileSizeAtResolution * (y + 1)
];
}
您可以 test/verify 在 http://jsfiddle.net/eurx57s7/
注意(从 ol3 示例中窃取,但它适用于此处):
图块坐标是 ol3 归一化图块坐标(原点左下角),而不是 OSM 图块坐标(原点左上角)
我想使用 openlayers 制作地图,但以独特的方式将其居中。例如,我有一个 z/x/y 坐标为 12/2045/-1362,如何将其转换为 longitude/latitude?这与此完全相反:How to get X Y Z coordinates of tile by click on Leaflet map
我很难理解上面link的逻辑并将其反转。我希望这里有人对此有经验或现成的公式。谢谢
稍后我将这样渲染我的地图中心:
var z = 12;
var x = 2045;
var y = -1362;
function convertXYZtoCoor(z, x, y) {
// code here
return [lng, lat];
}
var coor = convertXYZtoCoor(z, x, y);
var view = new ol.View({
center: ol.proj.transform(
[coor[0], coor[1]], 'EPSG:4326', 'EPSG:3857'),
zoom: z
});
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: view
});
希望我的问题得到更多的理解谢谢。
编辑:添加代码
var tileExtent = function(tileCoord){
var z = tileCoord[0];
var x = tileCoord[1];
var y = tileCoord[2];
var tileGridOrigin = tileGrid.getOrigin(z);
var tileSizeAtResolution = tileGrid.getTileSize(z) * tileGrid.getResolution(z);
return [
tileGridOrigin[0] + tileSizeAtResolution * x,
tileGridOrigin[1] + tileSizeAtResolution * y,
tileGridOrigin[0] + tileSizeAtResolution * (x + 1),
tileGridOrigin[1] + tileSizeAtResolution * (y + 1)
];
}
您可以 test/verify 在 http://jsfiddle.net/eurx57s7/
注意(从 ol3 示例中窃取,但它适用于此处): 图块坐标是 ol3 归一化图块坐标(原点左下角),而不是 OSM 图块坐标(原点左上角)