Openlayers如何刷新过滤图层

别再裸奔你的GeoServer图层了!手把手教你用Filter Chains实现登录访问控制(附前后端代码) 本文详细介绍了如何通过GeoServer的Filter Chains机制实现图层访问权限控制,解决默认安装的安全隐患。从认证体系构建到前后端集成方案,提供完整的代码示例和最佳实践,帮助开发者有效保护敏感地理数据。 阅读详情
使用Openlyers+Geoserver进行一个大量数据的展示,效率太低不能很好的的展示,也不适合于使用样式表按比例尺进行分层加载,于是研究一下如何通过代码刷新过滤图层,具体如下:
1、使用mergeNewParams的方式,这种方式从Geoserver的例子中学来的,数据量不大时可以使用,数据量一大,基本就不能使用了:
Java代码
  1. //先创建一个filter的数据结构 
  2. var filterParams = { 
  3.         filter: null, 
  4.         cql_filter: null, 
  5.         featureId: null 
  6.     }; 
  7. //可以使用cal, ogc, fid进行过滤,具体如下 
  8. if (OpenLayers.String.trim(filter) != "") { 
  9.         if (filterType == "cql") 
  10.             filterParams["cql_filter"] = filter; 
  11.         if (filterType == "ogc") 
  12.             filterParams["filter"] = filter; 
  13.         if (filterType == "fid") 
  14.             filterParams["featureId"] = filter; 
  15.     } 
  16. //然后调用图层方法,传入filter的数据 
  17. layer.mergeNewParams(filterParams); 
//先创建一个filter的数据结构
var filterParams = {
        filter: null,
        cql_filter: null,
        featureId: null
    };
//可以使用cal, ogc, fid进行过滤,具体如下
if (OpenLayers.String.trim(filter) != "") {
        if (filterType == "cql")
            filterParams["cql_filter"] = filter;
        if (filterType == "ogc")
            filterParams["filter"] = filter;
        if (filterType == "fid")
            filterParams["featureId"] = filter;
    }
//然后调用图层方法,传入filter的数据
layer.mergeNewParams(filterParams);
2、使用Filter的方式,如下所示:
Java代码
  1. filter: new OpenLayers.Filter.Logical({ 
  2.                     type: OpenLayers.Filter.Logical.OR, 
  3.                     filters: [ 
  4.                         new OpenLayers.Filter.Comparison({ 
  5.                             type: OpenLayers.Filter.Comparison.EQUAL_TO, 
  6.                             property: "TYPE", 
  7.                             value: "highway" 
  8.                         }), 
  9.                         new OpenLayers.Filter.Comparison({ 
  10.                             type: OpenLayers.Filter.Comparison.EQUAL_TO, 
  11.                             property: "TYPE", 
  12.                             value: "road" 
  13.                         }) 
  14.                     ] 
  15.                 }) 
filter: new OpenLayers.Filter.Logical({
                    type: OpenLayers.Filter.Logical.OR,
                    filters: [
                        new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.EQUAL_TO,
                            property: "TYPE",
                            value: "highway"
                        }),
                        new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.EQUAL_TO,
                            property: "TYPE",
                            value: "road"
                        })
                    ]
                })
但是这是初始化的时候,图层存在时如何刷新呢,可以调用图层的刷新方法,
Java代码
  1. layer.refresh(); 
layer.refresh();
但是这不起作用,需要强制刷新,搜索到几种方法,下面这个最简单:
Java代码
  1. layer.refresh({ force: true, active: true }); 
layer.refresh({ force: true, active: true });
另一种方法:
Java代码
  1. //创建一个Refresh的Strategy 
  2. var refresh = new OpenLayers.Strategy.Refresh({force: true, active: true}); 
  3. //然后把这个Strategy加入到图层 
  4. strategies: [new OpenLayers.Strategy.Fixed(), refresh], 
  5. //需要刷新的时候就调用他的refresh方法 
  6. refresh.refresh(); 
//创建一个Refresh的Strategy
var refresh = new OpenLayers.Strategy.Refresh({force: true, active: true});
//然后把这个Strategy加入到图层
strategies: [new OpenLayers.Strategy.Fixed(), refresh],
//需要刷新的时候就调用他的refresh方法
refresh.refresh();
3、使用不刷新,直接删除添加图层
虽然上面这几种方法都比较好,但是刷新的效率很低,于是尝试删除图层后再添加,发现显示效率更高,如下所示:
Java代码
  1. //删除图层 
  2. map.removeLayer(layder); 
  3. //更新过滤条件 
  4.     var f = new OpenLayers.Filter.Comparison({ 
  5.         type: OpenLayers.Filter.Comparison.EQUAL_TO, 
  6.         property: "PARENT", 
  7.         value: id 
  8.     }); 
  9.     //创建和添加图层 
  10.     layer= createLayer("layername", "layerid", f); 
  11.     map.addLayer(layer); 
避坑指南:OpenLayers加载天地图卫星影像时遇到的3个诡异问题(附完整代码) 本文深入解析OpenLayers加载天地图卫星影像时常见的三大问题:图层错位、缩放闪烁和标注丢失,并提供完整的优化方案和代码示例。通过调整WMTS参数、优化投影转换和图层同步机制,有效解决天地图集成中的技术难题,提升地图加载性能和用户体验。 阅读详情

相关推荐

OpenLayers地图数据加密传输实战:从原理到GeoJSON与切片安全实现

在WebGIS开发中,数据传输安全是保障地理信息资产的核心环节。其原理在于通过加密算法对传输内容进行混淆,确保即使数据被截获也无法被直接识别。技术价值在于为敏感的空间数据(如设施坐标、商业地理信息)提供应用层深度防护,超越仅依赖HTTPS的传输层安全。应用场景广泛覆盖物流追踪、智慧城市、资产管理等需要处理涉密矢量或栅格地图的领域。本文聚焦OpenLayers这一主流WebGIS库,深入探讨如何针对其核心数据格式(如GeoJSON矢量数据和XYZ切片)实施端到端加密。通过结合AES-GCM等现代加密算法与We

weixin_30315905的博客 333

全网最新版openlayers视频教程

学习关于二维地理图层渲染,投影转换,各种数据类型渲染,OGC服务,各种地图交互

5分钟搞定OpenLayers动态标签:用GeoJSON实现实时数据标注更新

本文深入探讨了如何利用OpenLayers和GeoJSON构建高性能的动态数据标注系统。文章详细解析了通过增量更新策略、WebSocket集成与智能轮询实现实时数据同步,并提供了基于属性的动态样式、标签避让以及大规模数据下的性能调优方案,帮助开发者应对物流追踪、交通监控等高频更新场景。

weixin_29212867的博客 445

openlayer 矢量图层刷新的问题

以上示例代码的场景是当我们改变图层样式或者改变要素时,去刷新重新渲染图层。什么是服务数据呢,就是有url地址的数据。以上我是直接把要素塞到source里面,当被清除时,并没有可用的数据服务地址去载入请求。注意一下:url是请求的地址,不是静态文件资源,所以vue中,不能像图片通过import导入后给他赋值,数据是请求不到的。所以如果是features加载,刷新图层后必须要重新加载下要素,原理就是clear()在后addFeature()。以下代码刷新是没问题的,因为数据是通过url地址请求的。

qq_39330397的博客 1962

WFS查询cql_filter与bbox互斥问题解决方案

在使用Openlayers进行geoserver发布的WFS服务进行查询的时候我们会遇到这样一个需求,就是我们需要属性查询结合空间查询,双重查询条件进行结果过滤。 意思是cql_filter和bbox都指定了但是互斥,说白了就是不让你同时用这两个条件进行查询。 没关系我们还有方法,上面只是给大家介绍了几个可能会走的弯路,接下来我们说正确的解决方案 ......

lz5211314121的博客 2605

Openlayers 教程 20 - 加载 Geoserver 图层以及条件过滤

Openlayers 加载 Geoserver 图层以及查询条件过滤。

非科班Java出身GISer的博客 1808

openlayers+geoserver ImageWMS过滤动态刷新图层

openlayers+geoserver ImageWMS过滤动态刷新图层 点击查看原文

gisdoer 2273

Openlayers 教程 21 - 加载 Geoserver 图层以及范围过滤

Openlayers 加载 Geoserver 图层以及范围过滤。

非科班Java出身GISer的博客 1794

java cqlfilter_openlayers+geoserver WMS过滤CQL_FILTER查询动态刷新图层

openlayers+geoserver WMS过滤CQL_FILTER查询动态刷新图层初始化图层var wmsSource = new ol.source.ImageWMS({crossOrigin: 'anonymous',params: {LAYERS: 'bjdz:un_feature', //图层'VERSION': '1.1.0','FORMAT': "image/png",bbox:...

weixin_29404509的博客 1447

Cadence元件库介绍

Cadence安装完之后,在安装目录下,会有默认自带的一些常用元件库。例如,我的Candece安装目录为: D:\Cadence\Cadence_SPB_17.2-2016 元件库所在目录为: D:\Cadence\Cadence_SPB_17.2-2016\tools\capture\library 各个元件库对应的内容如下: AMPLIFIER.OLB 共 182 个零件,存放模拟放大器 IC,如 CA3280,TL027C,EL4093 等。 ARITHMETIC.OLB 共 182 个零件,存放

年少时的棉花糖 1万+

空心杯电机在美容仪器中的应用:为什么你的洗脸刷动力这么强?

本文深入解析了空心杯电机如何成为高端美容仪器的核心动力源。通过对比传统电机,揭示了其无铁芯、低惯量、零齿槽效应的技术优势,从而实现了强劲动力、极致静音与细腻震动的用户体验。文章详细阐述了空心杯电机在洁面刷、导入仪等美容仪器中的具体应用与选型考量,并指出了开发中驱动匹配、测试等关键实战要点。

j2k3l4的博客 1014

OpenLayers开发:WFS过滤

openlayers简单教程,感谢丁少

u013925989的博客 2135

解决RocketMQ中@Bean配置DefaultMQProducer时的MQClientException问题

本文针对Spring Boot整合RocketMQ时,因在@Bean配置中手动调用DefaultMQProducer的start()方法而引发的MQClientException问题,深入剖析了其根本原因在于生命周期管理冲突。文章提供了简洁有效的解决方案——移除手动启动,让Spring容器自动管理,并给出了完整的配置示例与生产环境最佳实践。

rnn9storyteller的博客 690

OpenLayers 3.x 秘籍(二)

在本章中,我们将涵盖:添加 GML 图层添加 KML 图层以编程方式创建特征从 WKT 读取和创建特征在地图上添加标记使用点特征作为标记处理弹出窗口从 WFS 服务器添加特征使用聚类策略在 WFS 请求中过滤特征直接使用协议读取特征本章讨论矢量图层。除了栅格信息外,矢量信息是我们在 GIS 系统中可以处理的其他重要信息类型。本章试图总结您在 OpenLayers 中可能需要使用的一些最常见和重要的菜谱。在 GIS 中,现实世界现象通过特征的概念来表示。它可以是一个地点——比如一个城市或村庄——它可以是道路或

龙哥盟 869

OpenCv案例(七): 基于OpenCvSharp计算图像的清晰度(自动对焦)

自动对焦,其实是对相机成像的清晰值得计算,若对焦不清晰,成像的清晰度低,视觉效果模糊。若是在工业检测行业,对焦不准确,可能会造成严重后果;对焦准确的图像,其清晰度高,对比度鲜明,层次明显。

qq_37835727的博客 7115

ncl泰勒图(均方根误差、标准差、相关系数)

ncl泰勒图(均方根误差、标准差、相关系数)

weixin_61281699的博客 8011

openlayers

场景用哪个用户输入的经纬度EPSG:4326(度)地图底图瓦片EPSG:3857(米)传给 View 的 center用转成 3857从地图点击得到的坐标用toLonLat()转成 4326测距/测面积用ol/sphere的方法后端 API 返回的坐标通常是 4326,需要时转projection(投影)就是把地球这个三维球体上的经纬度坐标,"压平"到二维平面地图上的数学方法。你看到的任何一张平面地图(屏幕上的、纸质的),背后都有一个投影。没有投影,你就没法把地球画在平面上。

a378113472的博客 339

AI上推荐 之 协同过滤

㐇

Miracle8070 1万+

js源码分析——OpenLayers

js源码分析——OpenLayers 需求来源 webgis全套打通 参考手册 http://www.openLayers.cn/cnapi/files/OpenLayers/BaseTypes-js.html OpenLayers是开源webgis的js产品,开源决定了其广泛的包容性。 源码地址 https://github.com/kalaslib/shares/tr...

剑八的博客 9581

15、目标检测模型的评估指标与YOLO算法解析

本文详细解析了目标检测模型的评估指标,包括精确率、召回率、AP、mAP及IoU的定义与作用,并深入介绍了YOLO算法的核心原理与推理流程。从网格划分、锚框引入到边界框细化与后处理,全面阐述了YOLO如何实现快速准确的目标检测。同时总结了YOLO在智能安防、自动驾驶和工业检测等领域的应用,并展望了其未来在准确性提升、多类别支持和技术融合方面的发展趋势。

work3的博客 66

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ElementPlus整合OpenLayers避坑指南:如何打造高交互性地图控制面板

本文详细解析了ElementPlus与OpenLayers深度整合的七大关键策略,帮助开发者高效构建企业级地图控制面板。内容涵盖响应式架构设计、图层控制优化、工具栏防抖处理等实战技巧,特别针对Vue与OpenLayers的交互难题提供专业解决方案,助力提升GIS应用的开发效率和用户体验。

carrot的博客 174

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: java excel 导入导出 api
下一篇: javax.swing.filechooser 文件选择器
zyb_java
博客等级 码龄14年 8粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值