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();
	}
相关推荐
小智社群20 分钟前
贝壳获取小区的名称
开发语言·前端·javascript
Jessica_Lee41 分钟前
Openclaw智能体终止机制
javascript
米丘43 分钟前
Connect 深度解析:Node.js 中间件框架的基石
javascript·http·node.js
饺子不吃醋44 分钟前
执行上下文:变量提升、作用域与 this 底层机制
javascript
汉堡大王95271 小时前
为了搞懂 Promise 源码,我重写了 MiniPromise
前端·javascript
臧玉波1 小时前
一文读懂 JS 原型链
javascript
Hilaku1 小时前
OpenClaw 跟病毒的区别是什么?
前端·javascript·人工智能
逆光如雪3 小时前
移动端卡片边框怎么做高级?我用 CSS 实现了设计师的刁钻要求
前端·css·vue.js
莹宝思密达3 小时前
地图显示西安经济开发区边界线-2023.12
前端·vue.js·数据可视化
小龙报3 小时前
【Coze-AI智能体平台】Coze OpenAPI 开发手册:鉴权、接口调用与 SDK 实践
javascript·人工智能·python·深度学习·microsoft·文心一言·开源软件