vue中openlayers过滤高亮显示某个图层

vue中openlayers过滤高亮显示某个图层

openlayers库没有直接支持这样设置,所以可以使用库:ol-ext ,地址:https://viglino.github.io/ol-ext/examples/filter/map.filter.crop.html

效果:


关键代码:

js 复制代码
	/**
	 * 对绘制的区域做高亮显示,过滤其他图层
	 * 使用 Crop filter
	 */
	applyCropFilter(wktString) {
		const wktParser = new WKT();
		const feature = wktParser.readFeature(wktString);
		const cropExtent = feature.getGeometry().getExtent();
		this.cancelCropFilter();

		// -------裁剪过滤---------
		// this.cropFilter = new Crop({
		// 	feature: feature,
		// 	inner: false,
		// 	shadow: true,
		// });
		// -------高亮过滤---------
		this.cropFilter = new Mask({
			feature: feature,
			inner: false,
			shadow: true,
		});

		this.map.getLayers().forEach((layer) => {
			const lId = layer.id;
			// 这里是排除不进行过滤的图层
			if (lId && lId !== GLOBAL_VARIABLE.geoserverLayers.SSQDT.name) {
				layer.addFilter(this.cropFilter);
			}
		});
		this.map.render();
	}
	
	/**
	 * 恢复图层,取消过滤
	 */
	cancelCropFilter() {
		this.map.getLayers().forEach((layer) => {
			if (this.cropFilter) {
				layer.removeFilter(this.cropFilter);
			}
		});
		this.map.render();
	}
相关推荐
小陈同学呦4 小时前
前端如何处理订单状态导航的数据竞态问题
前端·javascript
开发者每周简报5 小时前
网海三部曲·无名宗师传
javascript·人工智能
喵个咪5 小时前
GoWind Toolkit 前端代码生成|Vue3(ElementPlus/Vben)、React(AntDesign)全自动一键生成教程
前端·vue.js·react.js
qq_2518364576 小时前
SpringBoot+Vue 共享电池柜管理系统 完整实现 前后端分离项目实战 完整代码
vue.js·spring boot·后端
之歆7 小时前
Day01_ES6+ 专业指南:从基础到实战的现代JavaScript开发(下)
前端·javascript·es6
kyriewen8 小时前
AI生成代码快如闪电,但我修了三个小时——它到底帮了谁?
前端·javascript·ai编程
竹林8188 小时前
用 wagmi v2 和 viem 手写 NFT 市场批量上架功能,我踩遍了所有异步坑
javascript
zithern_juejin9 小时前
数组扁平化
javascript
清溪5499 小时前
n8n表达式沙箱逃逸至RCE漏洞-CVE-2025-68613复现
javascript·安全
Hilaku9 小时前
多标签页并发请求导致 Token 刷新失败?只有 15行代码就能解决 !
前端·javascript·程序员