【利用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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: leaflet wmts 是一个在 Leaflet 地图库中集成的插件,用于加载和显示 Web Map Tile Service(WMTS)数据。WMTS 是一种标准化的 Web 地图服务协议,用于切片瓦片数据的传输和渲染。 使用 leaflet wmts 插件,我们可以通过指定 WMTS 服务的 URL 和图层名称来加载地图瓦片。插件会自动处理瓦片的分辨率、坐标系和样式等属性。用户还可以使用一些相关的选项来自定义地图的样式、缩放级别范围和图层顺序等。 在 Leaflet 中使用 WMTS 数据源可以在地图上显示精确的地理信息。WMTS 数据源通常由预先切片的地理数据组成,因此加载速度较快,并且可以实现地图的流畅缩放和平移。此外,WMTS 还支持多种坐标系和投影方式,能够适配不同的地理数据源和地图需求。 总的来说,leaflet wmts 插件为 Leaflet 提供了对 WMTS 数据源的完整支持,使开发者能够通过 WMTS 服务加载和显示地图瓦片。它提供了简单易用的 API 接口,使得集成 WMTS 数据到 Leaflet 地图应用变得更加容易。无论是展示地理信息还是实现交互式地图功能,leaflet wmts 都是一个非常有用的工具。 ### 回答2: leaflet wmts指的是在Leaflet中使用Web Map Tile Service(WMTS)来加载和显示地图数据。WMTS是一种用于传输地图瓦片的网络服务标准,它通常用于在Web浏览器中呈现地图图层。 要使用WMTS,我们首先需要在Leaflet中添加WMTS插件。然后,我们需要获取WMTS的服务URL和图层名称。通过将这些信息传递给Leaflet的WMTS函数,我们可以创建一个WMTS图层。 WMTS的每一个图层由许多瓦片(tiles)组成,每个瓦片代表地图的一小部分。当用户缩放或平移地图时,Leaflet会动态加载和显示相应的瓦片。由于瓦片是按需加载的,因此在显示大范围地图时,可以提高性能和效率。 在Leaflet中使用WMTS可以实现高性能的地图显示,特别是对于大规模的地图数据。通过WMTS,我们可以加载和显示具有高分辨率和复杂样式的地图。此外,WMTS还支持瓦片缓存,可以提高地图的加载速度,并减少对服务器的请求。 总之,leaflet wmts是一种在Leaflet中利用WMTS标准加载和显示地图数据的方法。它可以在Web浏览器中使用,提供高性能和高效率的地图显示,并支持高分辨率和复杂样式的地图。它是构建交互式和可定制的地图应用程序的重要工具。 ### 回答3: leaflet是一个开源的JavaScript库,用于在网页上创建交互式地图。WMTS(Web Map Tile Service)是一种用于动态地图切片的网络地图服务标准。所以,leaflet WMTS可以理解为在Leaflet中使用WMTS服务。 使用leaflet的WMTS插件,我们可以轻松地在Leaflet地图上加载和显示WMTS地图服务。首先,我们需要获取WMTS地图服务的URL地址和图层ID。然后,使用leaflet的TileLayer.WMTS方法创建一个WMTS图层对象。该方法需要传入WMTS服务的URL地址、图层ID和一些其他配置参数,例如最小、最大缩放级别等。创建完成后,我们可以使用addTo()方法将图层添加到Leaflet地图上。 为了使WMTS图层正确显示,我们还需要提供WMTS服务的坐标参考系统(CRS)信息。可以通过定义一个CRS对象,并设置其属性来指定CRS信息。然后,在创建WMTS图层时,使用该CRS对象作为可选参数传入。 在将WMTS图层添加到Leaflet地图上后,可以使用其他Leaflet提供的方法和事件来控制图层的显示,例如设置地图中心点、缩放级别、图层背景色等。还可以通过添加相应的控件来实现地图的放大、缩小、测量等功能。 总之,leaflet WMTS提供了一种简单方便的方法在Leaflet地图中加载和显示WMTS地图服务。通过使用leaflet的WMTS插件,我们可以轻松地创建具有丰富交互性和可定制性的地图应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值