首页 > 其他分享 >OpenLayers如何设置图层闪烁效果并加载到地图上

OpenLayers如何设置图层闪烁效果并加载到地图上

时间:2024-08-28 11:25:28浏览次数:8  
标签:style let color OpenLayers rgba new 图层 255 加载

        (本篇文章前提是了解openlayers具体使用方法)

        给图层增加闪烁效果,具体的实现思路其实就是从图层的style入手,通过设置两个不同的style并结合定时器,最后加载在地图上即可。

        当然,通过设置不同的style,不仅可以实现闪烁,还可以自定义实现,如大小缩放、颜色变换等等一系列效果。

以实现闪烁效果为例:

...
// 核心代码片段
// 设置第一个style
let styleA = new Style({
    fill: new Fill({
        color: "rgba(255, 0, 0, 0.9)",
    }),
    stroke: new Stroke({
        color: "rgba(255, 0, 0, 0.9)",
        width: 1,
    }),
    image: new CircleStyle({
        radius: 10,
        fill: new Fill({
            color: "rgba(255, 0, 0, 0.9)",
        }),
    }),
});
// 设置第二个style
let styleB = new Style({
    fill: new Fill({
        color: "rgba(255, 0, 0, 0.3)",
    }),
    stroke: new Stroke({
        color: "rgba(255, 0, 0, 0.5)",
        width: 1,
    }),
    image: new CircleStyle({
        radius: 10,
        fill: new Fill({
            color: "rgba(255, 0, 0, 0.3)",
        }),
      }),
    });
// 建立一个新图层
let layer = new VectorLayer({
    source: new VectorSource({
        features: features,
    }),
    style: styleA, // 这里初始先给一个style
});
// 实现闪烁效果
let flag = false;
const fun = () => {
    if (!flag) {
        layer.setStyle(styleA);
        flag = true;
    } else {
        layer.setStyle(styleB);
        flag = false;
    }
};
// 这里注意了,这个定时器因为会一直触发,得在有需要的地方clearInterval(this.timer)清除定时器
this.timer = setInterval(fun, 500);
// 最后添加到地图上OK
map.addLayer(layer);
...

大小缩放也顺便讲一下吧,这个一般运用到点图层的图标上:

...
// 设置scale字段实现图标大小缩放
let styleA = new Style({
    image: new Icon({
        anchor: [0.5, 0.5], // 这些属性的相关设置自己百度,这里不再赘述
        anchorOrigin: "top-right",
        offsetOrigin: "top-right",
        src: icon,
        scale: 0.8, // 重点是这里
    }),
});
let styleB = new Style({
    image: new Icon({
        anchor: [0.5, 0.5],
        anchorOrigin: "top-right",
        offsetOrigin: "top-right",
        src: icon,
        scale: 0.6, // 重点是这里
    }),
});
...

总结一下:这里主要就是学习实现的思路,代码写来写去也就是那样

标签:style,let,color,OpenLayers,rgba,new,图层,255,加载
From: https://blog.csdn.net/kyh419/article/details/141467197

相关文章

  • 2024 windows系统下 Qt 加载 OCCT的方法
    一使用的版本OCCT使用了最新版,于2023.11.08发布的7.8.0。是用windowsvisualstudio编译后的软件包, 编号v143,就是VS2022所编译的。Download-OpenCASCADETechnologyhttps://dev.opencascade.org/release OCCT在qt运行时,所需的第三方依赖全部集中起来了,在github......
  • 调整 MongoDB 以适应批量加载
    将几十亿条记录加载到MongoDB中,开始时加载速度还不错,但一段时间后就开始明显放缓。通过观察指标进行了一些研究,发现随着时间的推移,WiredTiger的检查点时间越来越长。检查点时间从最初的几秒到后面的几分钟。在检查点期间,性能基本上是直线下降: WiredTiger检查点从MongoDB......
  • OpenLayers3,地图探查功能实现
    文章目录一、前言二、代码实现三、总结一、前言图层探查,即对置于地图下方的图层进行一定范围的探查,以便用户查看到不易察觉的地理地况。本文基于OpenLayers3,实现地图探查的功能。二、代码实现<!DOCTYPEHTMLPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""ht......
  • 283:vue+openlayers 4326和3857坐标系下的分辨率区别
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第283个示例文章目录一......
  • vue3写一个触底加载hook
    天行健,地势坤--《周易·象传》背景:在一个滚动容器下实现触底加载更多的函数,由于此模块使用的场景较多,因而自己实现了一个滚动加载的hook(顺带尝试了下hook)需求:左侧tab切换时,右侧聊天历史tab要清空并重新请求;右侧触底时,要触发分页请求(如果有);使用dayjs中的fromnow方法以精确体......
  • 图片作为Canvas贴图时要等图片加载完才可以读取canvas
    一、效果二、第一步:canvas.js中封装canvas函数,生成一个canvas对象,标注文字为参数nameunctioncreateCanvas(name){  /**   *创建一个canvas对象,绘制几何图案或添加文字   */  constcanvas=document.createElement("canvas");  constarr=......
  • Nginx加载Lua环境
    Nginx加载Lua环境开源配置也可以直接部署春哥的开源项⽬OpenResty:http://openresty.org/cn/#安装依赖包[root@linuxprobe]#yuminstall-yreadline-develpcre-developenssl-devel[root@linuxprobe]#cd/soft/src#下载并编译安装openresty[root@linuxprobesrc]#......
  • ZBlog搭建的网站有的时候会提示【JavaScript加载失败】
    经常会有朋友反映,自己通过ZBlog搭建的网站偶尔会出现【JavaScript加载失败】这样的提示。那么,当遭遇此种状况时究竟应当如何应对呢?首先,您需要仔细检查自己所使用的浏览器版本是否太过陈旧(例如像IE6/7/8之类的旧版本),或者是否因为所使用的插件出现错误从而损坏了系统的JS文......
  • 类加载的过程与触发时机
    类加载过程加载阶段所谓加载,简而言之就是将Java类的字节码文件加载到机器内存中,一个Java文件从编码完成到最终执行,一般主要包括两个过程:编译和运行,其中编译就是把我们写好的java文件,通过javac命令编译成字节码,也就是我们常说的.class文件,编译过程中会对java代码做语法......
  • 讨论TableLayoutPanel加载缓慢和闪烁问题解决方案
    WinForm加载多个自定义控件时,会出现很严重的闪烁问题,很卡,一块一块的加载(像打开网页时,网络很卡的那种感觉)简直没法忍受。在网上搜索了好久,网上大部分的方法是一下4种,但是都不能有效的解决问题。1、将DoubleBuffered设置true,用双缓存处理Form界面内容加载,可以提高页面显......