openlayers结合input标签的range滑块来调整图层透明度

本文介绍了如何结合OpenLayers库与HTML的input标签类型为range的滑块,实现动态调整地图图层的透明度。通过监听滑块的改变事件,实时更新图层的opacity属性,达到交互式控制地图视觉效果的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//首先这是图层的样式,加载要素时根据Properties里的layer_name字段来加载不同样式
var styles = {
    'layer1': [new ol.style.Style({
        stroke: new ol.style.Stroke({
            color: [255, 255, 153, 0.5],
            width: 3
        }),
        fill: new ol.style.Fill({
            color: [255, 255, 153, 1]
        })

    })],
    'layer2': [new ol.style.Style({
        stroke: new ol.style.Stroke({
            // color: [255, 255, 255, 0.5],
            color: [204, 255, 204, 0.5],
            width: 3
        }),
        fill: new ol.style.Fill({
            color: [204, 255, 204, 1]
        })

    })]
};
var styleFunction = function (feature) {
    return styles[feature.getProperties()["layer_name"]];
};
layer.setStyle(styleFunction)
//加载透明度图层函数
function setOpacity(type, color) {
    //获取图层要素
    var source = layer.getSource().getFeatures();
    for (var i = 0; i < source.length; i++) {
		//获取要素中的type属性,
        var name = source[i].O.layer_name;
        if (name == type) {
            source[i].setStyle(new ol.style.Style({
                    stroke: new ol.style.Stroke({
                        color: color,
                        width: 1
                    }),
                    fill: new ol.style.Fill({
                        color: color
                    })
                })
            );
        }
    }
}

//样式加载完毕,开始加入滑块事件
$("#input .range").on("input", function () {
    var value = $(this).val();
    var opacity_color = 1 - value / 100;
    var layer_name = $(this).parents("li").find(".layer_name").attr("id");
    if (layer_name == "layer1") {
        setOpacity(layer_name, [204, 255, 204, opacity_color]);
    } else if (layer_name == "layer2") {
        setOpacity(layer_name, [51, 102, 204, opacity_color]);
    }
});

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值