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 后

css怎么让Android 浏览器焦点在文本输入框时不自动放大页面

刷新单向实体时不违反空约束

Flutter页面状态在返回时不刷新

重新加载tableview时不显示刷新动画|迅速

.Net ViewModel 在页面刷新时不更新