首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >echarts -在地图上添加纹理条纹的能力

echarts -在地图上添加纹理条纹的能力
EN

Stack Overflow用户
提问于 2021-05-05 10:16:50
回答 2查看 387关注 0票数 0

我用电子地图生成了一张地图。

使用visualMap属性和inRange minmaxoutOfRange选项相结合,我能够提取0值,使它们在灰色中着色。

想要的结果就快到了(见截图)!

但是我想用带条纹/模式的0值来显示元素--现在屏幕截图上是灰色的。我怎样才能用电子海图来实现这一点?

通缉模式的例子:

我查看了以下文档--并尝试了一些代码,但没有成功:

我的visualMap配置部分如下:

代码语言:javascript
复制
    visualMap : {
                type: 'continuous', 
                left : 'right',
                top : 'center',
                min : 469,
                max : 144464,
                inRange : {
                    color : colors
                },
                outOfRange: {
                    color:'#f4f4f4'
                },
                text : [ 'Haute', 'Faible' ],
                calculable : true
            },

另外的需要:我也很高兴能在传说中看到outOfRange

(这里也有报道:https://github.com/apache/echarts/issues/14874)

EN

回答 2

Stack Overflow用户

发布于 2021-06-04 20:48:25

为了使用模式填充,您需要使用画布对象作为颜色源。下面是一个代码示例,用于创建动态的、双色的条带模式:

代码语言:javascript
复制
function DashedPattern(color1, color2, canvasId) {
    var c = document.createElement('canvas');
    c.id = canvasId;
    c.width = 120;
    c.height = 120;
    c.style.border = "0px none";
    c.hidden = "true";
    var body = document.getElementsByTagName("body")[0];
    body.appendChild(c);
    var ctx = c.getContext("2d");
    ctx.strokeStyle = color1;
    ctx.fillStyle = color2;
    ctx.lineWidth = "2";
    var patternSpread = 5;
    ctx.beginPath();
    for (i = 1; i <= c.width / patternSpread; i++) {
        ctx.moveTo(i * patternSpread, 0);
        ctx.lineTo(0, i * patternSpread);
    }
    for (i = 1; i < c.height / patternSpread; i++) {
        ctx.moveTo(c.width, i * patternSpread);
        ctx.lineTo(i * patternSpread, c.height);
    }
    ctx.fillRect(0, 0, c.width, c.height);
    ctx.stroke();
    return c;
 }

 var c = DashedPattern(p.itemStyle.areaColor, p.itemStyle.secondColor, patternId);
 var newColor = { image: c, repeat: 'repeat' };
 p.itemStyle.areaColor = newColor;

当然,如果您只使用预定义的静态模式,您只需创建模式图像并将其加载到画布中,而不是动态生成。echarts中模式的缺点是它们是位图,不像地图的其他部分那么好看。下面是我使用模式的地图示例:

正如你所看到的,条纹在区域之间很好地对齐,但是当放大位图时,边缘是清晰可见的。可能可以通过使用模式大小来减少这种情况。

票数 1
EN

Stack Overflow用户

发布于 2021-11-17 13:00:00

实际上,电子海图的5.0+版本实现了decal特性。

我们从计算机图形学中借用了标记的概念,以避免与ECharts已经使用的模式混淆。在ECharts中,标记和模式之间的区别是,标记是一种参数配置,它生成重复的图像,而模式需要图像来重复。

有关此新功能的更多信息和示例,请参阅以下链接:

因为decal特性不依赖于图像,所以没有像素效应,不像使用pattern

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67399344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档