当缩放更改时,如何使用OpenLayers中止未完成的地图图块请求?

时间:2011-12-19 21:29:42

标签: ajax openlayers abort tms

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

当缩放发生变化时,有没有办法中止待处理的地图图块请求?如果没有通过OpenLayers,是否有某种方法可以中止对特定网址的所有待处理请求?

2 个答案:

答案 0 :(得分:2)

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

  

平铺代码已经过大修,因此网格图层中的平铺加载是   现在在队列中完成。切片队列可以更好地控制切片   请求发送到服务器。等待瓷砖的待处理请求   需要更多(例如在缩放或平移后),这是必要的   提高性能并减少服务器负载。

答案 1 :(得分:1)

通过鼠标滚轮定义缩放后,您可以使用以下代码来阻止为所有中间缩放级别加载切片:

new OpenLayers.Control.Navigation({
    "zoomWheelEnabled": true,
    "mouseWheelOptions": {
        "interval": 250, 
        "cumulative": true
    }
})