openlayer+虚线、实线

前言:

      openlayer实现虚线、实线效果的不同切换

实现效果:

 实现步骤:

1、虚线的方法:

lineDash数组可以任意长度,它的奇数代表线的长度,偶数代表间隙长度。通过这个规则,就可以画出各种规则的虚线,如以下效果:
在这里插入图片描述
再举个例子:lineDash: [20, 10, 40, 20]
在这里插入图片描述

具体代码:

//虚线
var styleFunction2 = function (feature) {
    var styles = [
        new ol.style.Style({ // 线串的样式
            stroke: new ol.style.Stroke({
                color: '#0509f0',
                width: 2,
                lineDash: [20, 10, 20, 10],
            })
        })
    ];
    // 对线段的每一个子线段都设置箭头样式
    return styles;
};

2、实线的方法:

//实线
var styleFunction1 = function (feature) {
    var styles = [
        new ol.style.Style({ // 线串的样式
            stroke: new ol.style.Stroke({
                color: '#0509f0',
                width: 2
            })
        })
    ];
    // 对线段的每一个子线段都设置箭头样式
    return styles;
};

3、相关所有的代码:

//------------------------定义样式------------------------
//实线
var styleFunction1 = function (feature) {
    var styles = [
        new ol.style.Style({ // 线串的样式
            stroke: new ol.style.Stroke({
                color: '#0509f0',
                width: 2
            })
        })
    ];
    // 对线段的每一个子线段都设置箭头样式
    return styles;
};
//虚线
var styleFunction2 = function (feature) {
    var styles = [
        new ol.style.Style({ // 线串的样式
            stroke: new ol.style.Stroke({
                color: '#0509f0',
                width: 2,
                lineDash: [20, 10, 20, 10],
            })
        })
    ];
    // 对线段的每一个子线段都设置箭头样式
    return styles;
};

//------------------------定义图层------------------------
var zhuanti_tuxing_source = new ol.source.Vector();


//------------------------定义具体图层------------------------
var zhuanti_tuxing_layer_dasher = new ol.layer.Vector({
    source: zhuanti_tuxing_source,
    style: styleFunction2
});
var zhuanti_tuxing_layer_solid = new ol.layer.Vector({
    source: zhuanti_tuxing_source,
    style: styleFunction1
});





//------------------------页面上button------------------------
<button class="nav_li_btn" id="nav_btn1" onclick="changeLineType(0)">实线</button>
<button class="nav_li_btn" id="nav_btn2" onclick="changeLineType(1)">虚线</button>



//------------------------页面上button按钮点击方法------------------------
var changeLineType = function (type) {

    //清理图层的其他效果,试具体需要换成你自己的
    zhuanti_tuxing_layer.getSource().clear();
    map.removeLayer(zhuanti_tuxing_layer);
    map.removeInteraction(zhuanti_tuxing_draw);


    //核心方法,根据你的按钮,选择你的图层
    if(type === 1){
        zhuanti_tuxing_layer = zhuanti_tuxing_layer_dasher
    }else{
        zhuanti_tuxing_layer = zhuanti_tuxing_layer_solid
    }
    
    //地图上添加你的图层
    map.addLayer(zhuanti_tuxing_layer);
}



  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OpenLayers中,可以通过单击地图来获取要素。下面是一个简单的示例代码: ```javascript // 创建一个地图对象 var map = new ol.Map({ target: 'map', layers: [ // 添加一个OSM图层 new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), zoom: 2 }) }); // 创建一个WFS源 var wfsSource = new ol.source.Vector({ format: new ol.format.GeoJSON(), url: function(extent) { return 'http://localhost:8080/geoserver/wfs?service=WFS&' + 'version=1.1.0&request=GetFeature&typename=workspace:layername&' + 'outputFormat=application/json&srsname=EPSG:3857&' + 'bbox=' + extent.join(',') + ',EPSG:3857'; }, strategy: ol.loadingstrategy.bbox }); // 创建一个矢量图层 var vectorLayer = new ol.layer.Vector({ source: wfsSource }); // 将矢量图层添加到地图中 map.addLayer(vectorLayer); // 监听地图的单击事件 map.on('click', function(evt) { map.forEachFeatureAtPixel(evt.pixel, function(feature) { // 处理点击事件,获取要素信息 console.log(feature.getProperties()); }); }); ``` 上述代码中,我们首先创建了一个地图对象,并添加了一个OSM图层。然后,我们创建了一个WFS源,并指定了WFS服务的地址和参数。接下来,我们创建了一个矢量图层,并将WFS源添加到该图层中。最后,我们监听地图的单击事件,并在事件处理函数中使用`forEachFeatureAtPixel`方法来获取点击位置的要素信息。 请注意,上述代码中的`workspace:layername`需要替换为实际的工作空间和图层名称,`http://localhost:8080/geoserver/wfs`需要替换为实际的GeoServer的WFS服务地址。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

浩星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值