OpenLayers贴图每次平移或缩放时都会重新绘制平铺(自定义XYZ平铺层)

OpenLayers贴图每次平移或缩放时都会重新绘制平铺(自定义XYZ平铺层),openlayers,Openlayers,每次平移贴图时,都会导致图层平铺被丢弃并重新获取 在OpenLayers.Layer.Grid.moveTo中,它检查当前磁贴边界,并决定是重新使用现有磁贴(通过movegriddetiles)还是从头开始获取它们(通过initgriddetiles)。因为平铺边界不正确(它们有时以度为单位,有时看起来像是在错误的方向上变换的-大约0.0015…) 有人知道从哪里开始查找吗?这是一个问题,因为transform()在我的自定义getURL函数中忽略了边界,忘记了先克隆它们 this.layer=

每次平移贴图时,都会导致图层平铺被丢弃并重新获取

OpenLayers.Layer.Grid.moveTo
中,它检查当前磁贴边界,并决定是重新使用现有磁贴(通过
movegriddetiles
)还是从头开始获取它们(通过
initgriddetiles
)。因为平铺边界不正确(它们有时以度为单位,有时看起来像是在错误的方向上变换的-大约0.0015…)


有人知道从哪里开始查找吗?

这是一个问题,因为
transform()
在我的自定义getURL函数中忽略了边界,忘记了先克隆它们

this.layer=new OpenLayers.layer.XYZ(
“图层描述”,
myBaseUrl+'&x=${x}&y=${y}&z=${z}',
{
名称:'图层名称',
getURL:getMyTileUrl,
键入:“jpg”,
minZoomLevel:15,
maxZoomLevel:18,
isBaseLayer:false,
transitionEffect:“调整大小”,
缓冲区:3
}
);
函数getMyTileUrl(边界){
bounds=bounds.transform(这个.projection,“EPSG:4326”);
// ...
返回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;
}
忘记克隆边界意味着我正在为该磁贴转换“官方”边界对象。下一次使用此边界对象时,将确定当前加载的分幅是否与新地图边界相交,以确定是否应移动一些分幅或将它们全部丢弃并获取新的分幅。由于它们被转换成不同的投影,OpenLayers认为当前加载的瓷砖来自地球上完全不同的地方,所以它将它们全部扔掉,重新开始