Leaflet.Control.Opacity 控制图层的透明度

最新有一个需求,能动态的控制Leaflet.js 地图图层的透明度,官网文档: https://leafletjs.com/reference.html#gridlayer-setopacity 

 

一直有个setOpacity方法,我以为拿来就能使呢,其实不行。后来找到一个日本人开发的demo: 右侧Controll显示底图,多选框https://dayjournal.github.io/Leaflet.Control.Opacity/

 方法一、 

 跟着这个案例,找到了依赖包:  

npm install leaflet.control.opacity

main.js: 


// CSS import
import "leaflet/dist/leaflet.css";
import "leaflet.control.opacity/dist/L.Control.Opacity.css";
import "./css/style.css";

// JS import
import 'leaflet.control.opacity';
import './js/app.js';

app.js

//MIERUNE Color
const m_color = new L.tileLayer('https://tile.mierune.co.jp/mierune/{z}/{x}/{y}.png', {
    attribution:
        "Maptiles by <a href='http://mierune.co.jp/' target='_blank'>MIERUNE</a>, under CC BY. Data by <a href='http://osm.org/copyright' target='_blank'>OpenStreetMap</a> contributors, under ODbL.",
});

//MIERUNE MONO
const m_mono = new L.tileLayer('https://tile.mierune.co.jp/mierune_mono/{z}/{x}/{y}.png', {
    attribution:
        "Maptiles by <a href='http://mierune.co.jp/' target='_blank'>MIERUNE</a>, under CC BY. Data by <a href='http://osm.org/copyright' target='_blank'>OpenStreetMap</a> contributors, under ODbL.",
});

//OSM
const o_std = new L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',
});

//GSI Pale
const t_pale = new L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png', {
    attribution:
        "<a href='http://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html' target='_blank'>国土地理院</a>",
});

//GSI Ort
const t_ort = new L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/ort/{z}/{x}/{y}.jpg', {
    attribution:
        "<a href='http://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html' target='_blank'>国土地理院</a>",
});

//MAP
const map = L.map('map', {
    center: [35.6831925, 139.7511307],
    zoom: 13,
    zoomControl: true,
    layers: [m_mono],
});

//BaseLayer
const Map_BaseLayer = {
    'MIERUNE Color': m_color,
    'MIERUNE MONO': m_mono,
};

//AddLayer
const Map_AddLayer = {
    'OSM': o_std,
    'GSI Pale': t_pale,
    'GSI Ort': t_ort,
};

//LayerControl
L.control
    .layers(Map_BaseLayer, Map_AddLayer, {
        collapsed: false,
    })
    .addTo(map);

//OpacityControl
L.control
    .opacity(Map_AddLayer, {
        label: 'Layers Opacity',
    })
    .addTo(map);

按照上面的步骤确实可以实现这个页面:

 方法二、

下面来一个改装的demo:

先看看效果图:

 通过添加 Map_AddLayer 2个 属性,

        // AddLayer
        const Map_AddLayer = {
            'GSI Pale': osmLayer,
            'GSI Ort': stamenLayer
        };

最后用:L.control.opacity  来实现

        L.control.opacity(Map_AddLayer, {
            label: 'Layers Opacity',
        }).addTo(map);

 代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" />
    <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>
    <script src="./dist/L.Control.Opacity.js"></script>
    <link href="./dist/L.Control.Opacity.css" rel="stylesheet" />
    <style>
        html,
        body,
        #map {
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <div id="map"></div>
    <script type="text/javascript">
        // 声明osm地图图层
        var osmLayer = L.tileLayer("http://{s}.tile.osm.org/{z}/{x}/{y}.png", {
            attribution: "osm"
        });

        // 声明stamen地图图层
        var stamenLayer = L.tileLayer("https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", {
            attribution: "stamen"
        });

        // 声明地图并添加图层
        var map = L.map('map', {
            center: [36.09, 120.35],
            zoom: 13,
            layers: [osmLayer, stamenLayer]
        });

        // 新建图层控件的数据源-地图
        var baseLayers = {
            'osm地图': osmLayer,
            'stamen地图': stamenLayer
        };

        // AddLayer
        const Map_AddLayer = {
            'GSI Pale': osmLayer,
            'GSI Ort': stamenLayer
        };

        //新建图层控件并添加到地图
        var layerControl = L.control.layers(baseLayers, Map_AddLayer).addTo(map);
        L.control.opacity(Map_AddLayer, {
            label: 'Layers Opacity',
        }).addTo(map);
    </script>
</body>
</html>

关于引入的 js、css文件地址请移步:https://download.csdn.net/download/qq_41646249/88167163

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: leaflet.tilelayer.wmts是一个用于在Leaflet地图库中加载WMTS(Web Map Tile Service)图层的插件。 WMTS是一种用于获取、显示和渲染地图瓦片的标准化协议。WMTS将地图数据切割为小的瓦片并提供给客户端,然后客户端根据需要请求和加载这些瓦片来组成完整的地图。 leaflet.tilelayer.wmts插件提供了一个函数来创建一个WMTS图层实例。这个函数需要提供一些参数,包括填充在URL模板中的替换变量,如服务URL、图层名称、样式、投影、瓦片矩阵集及其ID等。 使用leaflet.tilelayer.wmts可以方便地将WMTS图层加载到Leaflet地图中。只需要为插件的函数提供正确的参数,然后将返回的图层实例添加到地图上即可。 例如,可以使用以下代码加载一个WMTS图层: ```JavaScript var wmtsLayer = L.tileLayer.wmts('https://example.com/wmts/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png', { style: 'default', tilematrixSet: 'EPSG:4326', layer: 'myLayer', format: 'image/png', transparent: true }); var map = L.map('map').setView([51.505, -0.09], 13); wmtsLayer.addTo(map); ``` 以上代码演示了如何在Leaflet地图中使用leaflet.tilelayer.wmts加载一个WMTS图层。需要注意的是,URL模板中的替换变量(例如{Style}、{TileMatrixSet}等)需要根据实际情况进行替换。另外,还可以自定义一些其他选项,如图层样式、投影、图层名称及格式等。 总之,leaflet.tilelayer.wmts是一个方便的Leaflet插件,可用于加载WMTS图层,并为用户提供了简单的API来配置和管理这些图层。 ### 回答2: leaflet.tilelayer.wmts是一个在Leaflet地图库中,用于加载和显示Web地图切片图层的插件。WMTS代表Web地图切片服务(Web Map Tile Service),它是一种通过在不同层级上使用切片(tiles)的方式来提供地图数据的服务。 leaflet.tilelayer.wmts插件允许我们使用WMTS服务加载地图图层。它支持加载的图层类型包括矢量图层、栅格图层以及标注图层。我们可以通过指定图层的URL、样式和图层标识来加载WMTS图层。 为了使用leaflet.tilelayer.wmts插件加载WMTS图层,我们需要提供一个符合WMTS标准的服务URL。通常,这个URL包含了WMTS服务的地址、图层名称以及请求的样式。 在Leaflet中,我们可以使用L.tileLayer.wmts()函数来创建一个WMTS图层。我们需要传递的参数包括WMTS服务的URL、图层标识、以及其他的可选配置参数,如最大缩放层级、透明度等。 通过使用leaflet.tilelayer.wmts插件,我们可以轻松地在Leaflet地图上加载和显示WMTS图层。这使得在Leaflet中使用基于切片的Web地图服务变得更加简单和便捷。 总之,leaflet.tilelayer.wmts是一个用于在Leaflet地图库中加载和显示WMTS图层的插件。它基于Web地图切片服务,并通过指定WMTS服务的URL、图层标识等参数来加载地图图层。它的出现使得在Leaflet中使用WMTS图层变得更加方便和高效。 ### 回答3: leaflet.tilelayer.wmts是Leaflet地图库中的一个模块,用于加载和显示基于WMTS(Web Map Tile Service)协议的切片地图图层。 WMTS是一种通过Web服务提供的地图切片数据的标准化协议。切片数据是将地图拆分成小块的图像数据,每个切片表示地图的一部分。WMTS允许用户通过Web服务请求确定的切片数据,以在地图应用中加载和显示地图图层leaflet.tilelayer.wmts通过WMTS请求从指定的WMTS服务加载地图切片数据,并将其作为图层显示在Leaflet地图上。它提供了对WMTS图层的灵活配置选项,包括设置图层的URL地址、样式、投影、坐标系和切片大小等。 使用leaflet.tilelayer.wmts,我们需要提供WMTS服务的URL地址,并根据服务提供的要求进行配置。配置选项包括图层名称、样式、投影和地图坐标系等。然后,将配置好的leaflet.tilelayer.wmts对象添加到Leaflet地图中,即可在地图上显示WMTS图层。 例如,以下是使用leaflet.tilelayer.wmts加载WMTS图层的示例代码: ```javascript var wmtsLayer = L.tileLayer.wmts('http://myWMTSservice/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.png', { layer: 'myWMTSLayer', style: 'default', matrixSet: 'EPSG:4326', format: 'image/png', attribution: 'My WMTS Service' }).addTo(map); ``` 以上代码将从名为"myWMTSservice"的WMTS服务加载名为"myWMTSLayer"的图层数据。图层使用默认样式和EPSG:4326投影。加载的切片数据是PNG格式的图像。图层的属性会显示在地图上。 总之,leaflet.tilelayer.wmts是一个用于加载和显示基于WMTS协议的切片地图图层的模块,通过配置WMTS服务的URL地址和其他属性,可以将WMTS图层添加到Leaflet地图上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT博客技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值