将贴图的xyz坐标转换为经度/纬度

Convert xyz coordinate of a tile to longitude/latitude

本文关键字:经度 纬度 转换 坐标 xyz      更新时间:2023-09-26

我想用openlayers制作一个地图,但是用一种独特的方式居中。例如,我有一个z/x/y坐标12/2045/-1362,我如何将其转换为经度/纬度?这是完全相反的两极:如何获得X Y Z坐标的瓷砖点击传单地图

我很难理解上面链接的逻辑并把它颠倒过来。我希望在座有人对此有经验或现成的公式。由于

之后,我将在渲染我的地图的中心像这样:

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)
    ];
}

你可以在http://jsfiddle.net/eurx57s7/

测试/验证

注意(从ol3的例子中偷来的,但在这里适用于):贴图坐标是ol3规范化贴图坐标(原点左下),而不是OSM贴图坐标(原点左上)