OpenLayers3 在放大时不刷新 WMS
Posted
技术标签:
【中文标题】OpenLayers3 在放大时不刷新 WMS【英文标题】:OpenLayers3 no refresh WMS in zoom-in 【发布时间】:2017-06-19 23:16:12 【问题描述】:我有一个使用 OpenLayers3、GeoServer 和 ReactJS 制作的应用程序,显示了一些 WMS。并且由于一个奇怪的原因,只有当屏幕分辨率大于 1314 像素时,我才能在放大时刷新图像。很奇怪,如果分辨率例如1310,我可以正常放大和缩小,每次缩放后wms都会刷新,但是,如果分辨率大于1315px,只能缩小工作,但不能放大在。
以前有人做过这样的实验吗?
这就是我调用 wms (ReactJS) 的方式:
var map = this.state.map;
var wmsLayer = new ol.layer.Image(
source: new ol.source.ImageWMS(
url: 'http://spif.XX.XX:8080/geoserver/cite/wms',
params: 'LAYERS': 'cite:biodent_clientes',
serverType: 'geoserver'
)
);
this.state.layersMaServer = wmsLayer;
map.addLayer(wmsLayer);
GeoServer 没有问题,每次放大或缩小后 WMS 都加载得很好,但我不知道为什么在客户端(broser)上没有刷新放大。如果我稍微缩小一点,图像就会用正确的 wms 刷新,但为什么只有 1314 像素以下!
任何帮助,谢谢。
【问题讨论】:
您确定您的 WMS 服务器没有大小限制吗? GeoServer 发送了正确的图像,我可以在 Chrome Dev 的“网络”中看到它们,但只有当屏幕尺寸不超过 1315px 时,应用才会刷新它。但是图像文件生成得很好。另外,geoserver 日志中没有错误消息。 【参考方案1】:改用平铺 WMS:
var map = this.state.map;
var wmsLayer = new ol.layer.Tile(
source: new ol.source.TileWMS(
url: 'http://spif.XX.XX:8080/geoserver/cite/wms',
params: 'LAYERS': 'cite:biodent_clientes',
serverType: 'geoserver'
)
);
this.state.layersMaServer = wmsLayer;
map.addLayer(wmsLayer);
【讨论】:
我已经尝试过多次使用瓷砖但没有成功。我也做了这个帖子:***.com/questions/44662136/…(我刚刚用你的代码测试过,它的行为是一样的)以上是关于OpenLayers3 在放大时不刷新 WMS的主要内容,如果未能解决你的问题,请参考以下文章
SVG <rect /> 在初始加载时不显示颜色,仅在放大或缩小 IE-11 后