在Openlayers 3中,为什么TMS y坐标为负?

时间:2016-08-02 21:03:17

标签: javascript gis openlayers-3

我一直在使用openlayers 3,3.17.1来绘制一些自定义图块,我注意到y坐标传递给了我的ol.source.UrlTile子类' getTile方法是否定的。为什么呢?

编辑:这里是如何看到我看到的内容

var MyVectorTile = function (options) { 
    ol.source.VectorTile.call(this, options); 
    this.customOption_ = options.customOption;
}; 
ol.inherits(MyVectorTile, ol.source.VectorTile); 
MyVectorTile.prototype.getTile = function (z, x, y, pixelRatio, proj) { 
    console.log(z, x, y); 
    return ol.source.VectorTile.prototype.getTile.call(this, z, x, y, pixelRatio, proj);
}

这是另一种查看方式 - 将此图层添加到地图

new ol.layer.Tile({
    visible: true,
    preload: 16,
    source: new ol.source.TileDebug({
    projection: "EPSG:3857",
    tileGrid: new ol.tilegrid.createXYZ({
            maxZoom: 22
        }),
    color: 'rgba(255,204,0,1)'
}),
title: 'Ol3 Tile Debug'
});

1 个答案:

答案 0 :(得分:1)

我最好的猜测是,在使用JavaScript调试器执行ol3后,这些是内部坐标,ol.source.TileDebug将显示它们不变。

在函数ol.TileUrlFunction.createFromTemplate中有this part

var y = -tileCoord[2] - 1;

据我所知,这会将负y坐标更改为正面坐标并将其插入到贴图网址中的{y}占位符中(他们将占位符称为“模板”的网址),我试过了使用OpenStreetMap图块以及输入和输出匹配。

ol.source.TileDebug但是没有通过这个功能(没有“模板”URL,即使你指定了一个未调用的函数),也会在屏幕上打印这些内部坐标。