我有一个带有TMS图层的OpenLayers地图。对于每次缩放更改,我的地图会发出大约56个地图图块请求(取决于地图/屏幕大小)。如果用户快速放大或缩小,所有这些地图图块请求都按顺序排队,我的理解是不会异步调用OpenLayers的地图图块请求。因此,如果用户快速放大或缩小,最终会有许多不再需要的地图图块请求,并且在完成所有先前的请求之前,所需的图片将不会加载。
当缩放发生变化时,有没有办法中止待处理的地图图块请求?如果没有通过OpenLayers,是否有某种方法可以中止对特定网址的所有待处理请求?
答案 0 :(得分:2)
更新到OpenLayers 2.12或更高版本,因为自此版本以来,磁贴队列已得到增强,现在可以避免旧请求。引用OpenLayers 2.12 Release Notes:
平铺代码已经过大修,因此网格图层中的平铺加载是 现在在队列中完成。切片队列可以更好地控制切片 请求发送到服务器。等待瓷砖的待处理请求 需要更多(例如在缩放或平移后),这是必要的 提高性能并减少服务器负载。
答案 1 :(得分:1)
通过鼠标滚轮定义缩放后,您可以使用以下代码来阻止为所有中间缩放级别加载切片:
new OpenLayers.Control.Navigation({
"zoomWheelEnabled": true,
"mouseWheelOptions": {
"interval": 250,
"cumulative": true
}
})