每次平移地图时都会丢弃并重新获取图层图块。
在OpenLayers.Layer.Grid.moveTo
中,它检查当前的图块边界并决定是否重新使用现有图块(通过moveGriddedTiles
)或从头开始(通过initGriddedTiles
)获取它们。由于图块边界不正确(它们有时看起来像是度数,有时看起来像是在错误的方向上变换 - 大约0.0015 ......)。
有没有人有任何关于从哪里开始寻找的线索?
答案 0 :(得分:0)
transform()
我的自定义getURL函数中的边界并忘记clone()
首先,这是一个问题。
this.layer = new OpenLayers.Layer.XYZ(
'layer description',
myBaseUrl + '&x=${x}&y=${y}&z=${z}',
{
name: 'layer name',
getURL: getMyTileUrl,
type: 'jpg',
minZoomLevel: 15,
maxZoomLevel: 18,
isBaseLayer: false,
transitionEffect: 'resize',
buffer: 3
}
);
function getMyTileUrl(bounds) {
bounds = bounds.transform(this.projection,"EPSG:4326");
// ...
return this.url + z + "/" + x + "/" + y + "." + this.type;
}
解决方案只是在转换它们之前克隆边界。
function getMyTileUrl(bounds) {
bounds = bounds.clone().transform(this.projection,"EPSG:4326");
// ...
return this.url + z + "/" + x + "/" + y + "." + this.type;
}
忘记克隆边界意味着我正在转换该tile的“官方”边界对象。下一次使用此边界对象时,确定当前加载的切片是否与新的地图边界相交,以确定是否应移动一些切片或将它们全部扔掉并获取新切片。由于它们被转换为不同的投影,OpenLayers认为当前装载的瓷砖来自行星的一个完全不同的部分,因此它将它们扔掉并重新开始。