我一直在使用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'
});
答案 0 :(得分:1)
我最好的猜测是,在使用JavaScript调试器执行ol3后,这些是内部坐标,ol.source.TileDebug
将显示它们不变。
在函数ol.TileUrlFunction.createFromTemplate
中有this part。
var y = -tileCoord[2] - 1;
据我所知,这会将负y
坐标更改为正面坐标并将其插入到贴图网址中的{y}
占位符中(他们将占位符称为“模板”的网址),我试过了使用OpenStreetMap图块以及输入和输出匹配。
ol.source.TileDebug
但是没有通过这个功能(没有“模板”URL,即使你指定了一个未调用的函数),也会在屏幕上打印这些内部坐标。