【利用oplayers任意更换WMTS瓦片颜色】

2023-11-27 03:40

本文主要是介绍【利用oplayers任意更换WMTS瓦片颜色】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用oplayers任意更换WMTS瓦片颜色

  • 利用oplayers任意更换WMTS瓦片颜色
    • 官方案例
    • 直接上代码自己干

利用oplayers任意更换WMTS瓦片颜色

从官方代码得到启示,然后咱们举一反三去实现

官方案例

openlayers3开始,其底层渲染从SVG切换到了canvas,据说渲染效率提高了不少
openlayers官方给出了标准案例:
链接: https://openlayers.org/en/latest/examples/color-manipulation.html自己看;
原理就是:

map.on('precompose', function(evt){var ctx = evt.context;ctx.filter = filter;//设置滤镜值})map.render();

filter值类型为字符串,默认值为"none";
precompose事件会在地图渲染前发生,因此在渲染前,改变filter值,即可让地图按设置的滤镜进行渲染。

直接上代码自己干

先看原图
在这里插入图片描述
设置成灰色
1)灰度滤镜: 设置filter值为 grayscale(100%)
在这里插入图片描述
2)褐色: 设置filter值为 sepia(100%)
在这里插入图片描述
3)复合滤镜
可以使用多个滤镜,值之间用空格隔开,如:contrast(150%) saturate(200%)
在这里插入图片描述

js代码片.

var app = {baseLayer: undefined,map: undefined,filter: 'none',key: undefined,init: function(){this.baseLayer = new ol.layer.Tile({source: new ol.source.XYZ({url: 'https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}'})});this.map = new ol.Map({target: 'map',view: new ol.View({projection: 'EPSG:4326',center: [118, 36],zoom: 7}),layers: [this.baseLayer]});this.map.on('precompose', function(evt){let ctx = evt.context;ctx.filter = this.filter;}.bind(this))}
}app.init();function fs(type){switch (type) {//反色case 'invert':type = 'invert' + '(100%)'break;//褐色case 'sepia':type = 'sepia' + '(100%)'break;//灰度case 'grayscale':type = 'grayscale' + '(100%)'break;//复合case 'complex':type = 'contrast(150%) saturate(200%)'break;//默认default:type = 'none';break;}app.filter = type;app.map.render();
}

html代码片.

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"><link rel="stylesheet" href="https://openlayers.org/en/v4.6.5/css/ol.css" type="text/css"><title>滤镜</title><script src="https://openlayers.org/en/v4.6.5/build/ol.js"></script><style>head,body, #map{height: 100%;width: 100%;margin: 0%;padding: 0%;}.ol-attribution{display: none;}.ol-zoom{display: none;}.input-group-btn{top: 2%;left: 1%;z-index: 1;position: absolute;}</style>
</head>
<body><div id="app"><div id="map"></div>        <div class="input-group-btn"><button type="button" class="btn btn-default" onclick="fs('invert')">反色</button><button type="button" class="btn btn-default" onclick="fs('sepia')">褐色</button><button type="button" class="btn btn-default" onclick="fs('grayscale')">灰度</button><button type="button" class="btn btn-default" onclick="fs('complex')">复合滤镜</button><button type="button" class="btn btn-default" onclick="fs('none')">原色</button></div></div><script src="./app.js"></script>
</body>
</html>

这篇关于【利用oplayers任意更换WMTS瓦片颜色】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426984

相关文章

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

秒变高手:玩转CentOS 7软件更换的方法大全

在 CentOS 7 中更换软件源可以通过以下步骤完成。更换源可以加快软件包的下载速度,特别是当默认源速度较慢时。以下是详细步骤: 前言 为了帮助您解决在使用CentOS 7安装不了软件速度慢的问题,我们推出了这份由浪浪云赞助的教程——“CentOS7如何更换软件源加快下载速度”。 浪浪云,以他们卓越的弹性计算、云存储和网络服务受到广泛好评,他们的支持和帮助使得我们可以将最前沿的技术知识分

全英文地图/天地图和谷歌瓦片地图杂交/设备分布和轨迹回放/无需翻墙离线使用

一、前言说明 随着风云局势的剧烈变化,对我们搞软件开发的人员来说,影响也是越发明显,比如之前对美对欧的软件居多,现在慢慢的变成了对大鹅和中东以及非洲的居多,这两年明显问有没有俄语或者阿拉伯语的输入法的增多,这要是放在2019年以前,一年也遇不到一个人问这种需求场景的。 地图应用这块也是,之前的应用主要在国内,现在慢慢的多了一些外国的应用场景,这就遇到一个大问题,我们平时主要开发用的都是国内的地

linux 内核提权总结(demo+exp分析) -- 任意读写(四)

hijack_modprobe_path篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     原理同hijack_prctl, 当用户执行错误格式的elf文件时内核调用call_usermod

linux 内核提权总结(demo+exp分析) -- 任意读写(三)

hijack_prctl篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   prctl函数: 用户态函数,可用于定制进程参数,非常适合和内核进行交互 用户态执行prctl函数后触发prctl系统

linux 内核提权总结(demo+exp分析) -- 任意读写(二)

hijack_vdso篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     vdso: 内核实现的一个动态库,存在于内核,然后映射到用户态空间,可由用户态直接调用 内核中的vdso如果被修改

linux 内核提权总结(demo+exp分析) -- 任意读写(一)

cred篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   每个线程在内核中都对应一个线程结构块thread_infothread_info中存在task_struct类型结构体 struct t

渐变颜色填充

GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。 [cpp]  view plain copy print ? BOOL GradientFill(     _In_  HDC hdc,     _In_  PTRIVERTEX pVertex,     _In_  ULONG