2.0.0 • Published 2 years ago

@panzhiyue/leaflet-imagemask v2.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

leaflet-imageMask

leaflet-imageMask是一个图片遮罩层控件,继承自L.ImageOverlay。我们很多时候希望只显示某块区域内的内容,隐藏或者模糊区域外内容。现在网上能找到的代码都是纯色遮罩,不是特别好看。此控件实现了使用指定图片填充遮罩部分内容。 demo

示例

        window.onload = function () {
            var map = L.map("map",{crs:L.CRS.EPSG4326});
            map.setView([30.46337852800008, 120.967045726], 6);

            L.tileLayer('http://t4.tianditu.gov.cn/vec_c/wmts?tk=6dfd31e3b55a8466f34997aee5551a9c&layer=vec&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}', {
                name: "中国天地图影像",
                maxZoom: 20,
                tileSize: 256,
                zoomOffset: 1
            }).addTo(map);

            L.tileLayer('http://t2.tianditu.gov.cn/cva_c/wmts?tk=6dfd31e3b55a8466f34997aee5551a9c&layer=cva&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}', {
                name: "中国天地图影像标注",
                maxZoom: 20,
                tileSize: 256,
                zoomOffset: 1
            }).addTo(map);

            $.ajax({
                url: "../resources/json/ZJ_quxian_RH.json",
                success: function (data) {
                    //添加GeoJSON数据,在地图中显示
                    var geojson = L.geoJSON(data);
                    var maskLayer = L.imageMask('../resources/images/bjt.jpg', {
                        padding: 1,
                        polygons: geojson.getLayers(),
                        mode:"clip"  //clip:指定区域不显示背景图,show:指定区域显示背景图
                    }).addTo(map);
                    //地图移动时刷新覆盖层,可以实现背景图片始终不变
                    map.on("move",function(){
                        maskLayer.refresh();
                    });
                }
            });
        }

效果图

clip:

1625816478013

show:

1625816603625

构造函数

L.imageMask(<String> imageUrl, <ImageMask options> options?)

url:图片资源路径

options:

  • polygons(Array<L.Polygon>):面集合,用于表示显示背景图或者不显示背景图的区域
  • mode(string):显示模式:clip:polygons表示的区域不显示背景图,show:polygons表示的区域显示背景图
  • padding(number):围绕地图视图(相对于其大小)扩展剪辑区域多少,例如 0.1 将是每个方向地图视图的 10%

方法

名称返回值描述
getMode()string获取显示模式
getPolygons()Array<L.Polygon>获取面集合
setMode()this设置显示模式
setPolygons()this设置面集合
refreshthis刷新