学向勤中得,萤窗万卷书。这篇文章主要讲述如何给OpenPlayer3 绘制图例相关的知识,希望能为你提供帮助。
问题:
使用到ol.style.Style时候,总是会使用到fillStyle,StrokeStyle,Image,Text等等
地图常规三要素:
?比例尺,图例,指向标
目前最难啃下来的就是图例,目前我们看到ol.color
解决:使用ol.colorLike
这个也可以直接赋值给fill属性的color
fill:new ol.style.Fill(
color: my_gradient
),
1.进一步挖掘,就可以发现,这个colorlike支持??HTML DOM CanvasRenderingContext2D 对象???的一个属性??CanvasPattern??
除了这一个属性之外,还支持常见#颜色值,还支持线性渐变
2.线性渐变的代码如下:
var MyCanvas = document.getElementById("cav2");
if(MyCanvas.getContext)
const ctx = MyCanvas.getContext(2d);
var my_gradient=ctx.createLinearGradient(0,0,170,0);
my_gradient.addColorStop(0,"black");
my_gradient.addColorStop(1,"white");
其中html代码简单如下:
< canvas id="cav2"> < /canvas>
【如何给OpenPlayer3 绘制图例】3.进一步发现这个对象CanvasPattern ,自身是没有任何方法和属性的。是由另一个方法创建返回
方法就是createPattern()
该方法接受两个参数
image,repaet
其中image就可以直接做成固定的图例区,然后通过id获取图里的图片即可
代码如下:
var img_lamp = document.getElementById("lamp");
var img_39 = document.getElementById("39");
var my_lamp=ctx.createPattern(img_lamp,"repeat")
var my_39=ctx.createPattern(img_39,"repeat")
设置图层fill:
vectorHDLayer.setStyle(new ol.style.Style(
fill:new ol.style.Fill(
color: my_lamp
),
stroke:new ol.style.Stroke(
color:"#24E38B",
width:2
)
));
vectorXTLayer.setStyle(new ol.style.Style(
fill:new ol.style.Fill(
color: my_39
),
stroke:new ol.style.Stroke(
color:"#24E38B",
width:2
)
));
问题解决
推荐阅读
- kubernetes1.23.1部署prometheus-operator
- Terraform系列一腾讯云CVM相关简单创建
- Nginx负载均衡中常见的算法及原理
- ELT.ZIPOpenHarmony啃论文俱乐部——轻翻那些永垂不朽的诗篇
- linux 基础
- 诡异的JVM永久代溢出
- 智慧园区数据共享,一体化城市从数字化运维开始
- Linux 内核进程管理 - 进程优先级 ② ( prio 调度优先级 | static_prio 静态优先级 | normal_prio 正常优先级 | rt_priority 实时优先级 )
- HTML动画特效-小游戏(第三部)