在openlayer行中交替使用虚线颜色

62lalag4  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(357)

我试图在openlayers中用两种颜色绘制线条,作为交替的虚线,而不是纯色。我在3.5年前发现了一个关于这一点的问题和答案,它被标记为openlayers-3。但是,我使用的是openlayers 6.4,无法实现这一点。
对于每个功能(有许多功能具有不同的颜色),我分别使用以下方法设置线条颜色:

color: colourname (or number etc.)

在特征样式规范中。每个线要素的规范中还有一个命名规范,标识为线型。
我设置了两个颜色变量:

var gwgcfirstcolour = new ol.style.Style({
        stroke: new ol.style.Stroke({
            colour: "rgba(139,69,19,0.9)",
            width: 4,
            lineDash: [6,6],
            lineDashOffset: 6
        })
    });
    var gwgcsecondcolour = new ol.style.Style({
        stroke: new ol.style.Stroke({
            colour: "rgba(255,140,0,0.9)",
            width: 4,
            lineDash: [6,6]
        })
    });

正如该项目中所建议的,我正试图以这种形式使用它们:

if( feature.get('linetype') === 'gcgwjoint' )
    style.getStroke().setLineDash([gwgcfirstcolour, gwgcsecondcolour]);

此构造可用于以数字方式设置各种长度和组合的虚线,但不会为该功能应用多色虚线设置。
任何协助都将不胜感激。
发布这个问题后,我进一步了解了openlayers规范,它说linedash的参数是一个数字数组。因此[5,5]将起作用,但可能不是一对数组,而不仅仅是一对简单的数字
我找到了一个可行的解决方案(不需要任何变量声明),即以这种方式设置两行具有相同行字符串值的行:

if( feature.get('linetype') === 'specialOne' )
            style.getStroke().setLineDash([6,24]);

        if( feature.get('linetype') === 'specialTwo' )
            style.getStroke().setLineDash([6,24]),
            style.getStroke().setLineDashOffset(15);

这会产生双色虚线效果,因为两条线一条位于另一条线上,而第二条线的虚线位于第一行左侧的“空格”中。大概,通过一点实验,可以通过更改破折号和偏移值来生成许多彩色线,以适应需要。其优点是,这将适用于任何颜色组合。
有谁有更好的解决方案吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题