Openlayers 3 如何在按程序更改地图中心和缩放后重新加载WMTS分幅?
我正在实现一个功能,用户可以选择与地图上的某个点对应的列表项。我目前可以设置正确的地图中心和缩放级别,但在我导致地图上出现鼠标滚轮缩放交互之前,地图分幅是空白的。如何使我的WMTS图层更新到新的缩放级别和贴图范围?原则上,更改WMTS源的Openlayers 3 如何在按程序更改地图中心和缩放后重新加载WMTS分幅?,openlayers-3,Openlayers 3,我正在实现一个功能,用户可以选择与地图上的某个点对应的列表项。我目前可以设置正确的地图中心和缩放级别,但在我导致地图上出现鼠标滚轮缩放交互之前,地图分幅是空白的。如何使我的WMTS图层更新到新的缩放级别和贴图范围?原则上,更改WMTS源的tileUrlFunction将触发刷新,因为这将清除平铺缓存。如果幸运的话,您的WMTS服务器正确地使用了ETag,只需再次使用相同的url功能即可: wmtsSource.setTileUrlFunction(wmtsSource.getTileUrlFun
tileUrlFunction
将触发刷新,因为这将清除平铺缓存。如果幸运的话,您的WMTS服务器正确地使用了ETag,只需再次使用相同的url功能即可:
wmtsSource.setTileUrlFunction(wmtsSource.getTileUrlFunction());
如果您的WMTS服务器只是设置了expire头,那么您必须在url中附加一些内容,以强制浏览器重新蚀刻它。假设您使用KVP编码与WMTS服务器通信,您可以通过执行以下操作来实现
var random=Math.random();
var originalTileUrlFunction=wmtsSource.getTileUrlFunction();
wmtsSource.setTileUrlFunction(函数(){
返回originalTileUrlFunction.apply(this,arguments)+'&'+random;
});
您想要OpenLayers 2(标记OpenLayers
)或OpenLayers 3(标记OpenLayers-3
)的答案吗?请删除两个标记中的一个,具体取决于您要查找的内容。我认为它必须在更改视图时自动更新。可能是3.4.0版本中的一个bug,或者您的新位置超出了层maxResolution
@EricSonaron设置map.getView().setCenter([…])和map.getView().setZoom()函数后,我尝试了map.render和map.renderSync函数。我可以确认我没有超出层的maxResolution
。我也尝试过ol-3.3.0和ol-3.2.1,效果相同。尝试使用动画更改中心和缩放级别:请参阅。我想这会迫使我更新。我尝试了你的建议,但不幸的是,在我的情况下,它们都不起作用。