5

我有一个带有 TMS 图层的 OpenLayers 地图。对于每次缩放更改,我的地图会发出大约 56 个地图图块请求(取决于地图/屏幕大小)。如果用户快速放大或缩小,所有这些地图瓦片请求都会按顺序排队,我的理解是来自 OpenLayers 的地图瓦片请求不是异步调用的。因此,如果用户快速放大或缩小,最终会有许多不再需要的地图图块请求,并且在所有先前的请求都发出之前,需要的图块不会加载。

有没有办法在缩放更改时中止待处理的地图图块请求?如果不通过 OpenLayers,是否有某种方法可以中止对特定 URL 的所有挂起请求?

4

2 回答 2

2

更新到 OpenLayers 2.12 或更高版本,因为自此版本以来,磁贴队列已得到增强,现在将避免旧请求。引用OpenLayers 2.12 发行说明

切片代码已经过大修,因此网格层中的切片加载现在是在队列中完成的。瓦片队列对发送到服务器的瓦片请求提供更多控制。避免了对不再需要的图块的挂起请求(例如,在缩放或平移之后),这提高了性能并减少了服务器负载。

于 2012-08-21T10:32:28.493 回答
1

当您通过鼠标滚轮定义缩放时,您可以使用以下代码来防止加载所有中间缩放级别的图块:

new OpenLayers.Control.Navigation({
    "zoomWheelEnabled": true,
    "mouseWheelOptions": {
        "interval": 250, 
        "cumulative": true
    }
})
于 2012-08-21T10:10:11.090 回答