ol中闪烁点动画的实现

概述

本文讲述如何在ol中实现闪烁点动画。

实现效果

实现后效果

实现思路

实现如图的动画,可以用两种思路:
1.overlay+css3动画实现;
2.canvas动画实现。

实现

1、overlay+css3实现

css的实现如下:

@keyframes animate {
  0% { transform: scale(0.3); }
  100% { transform: scale(1); }
}

.animate-overlay {
	width: 30px; 
	height: 30px;
	background: radial-gradient(circle, red, rgba(255, 0, 0, 0));
	border: 1px solid red;
	border-radius: 50%;
	animation: 1s animate infinite;
}
for(var i = 0;i<data.length;i++) {
  var d = data[i];
  var coord = ol.proj.fromLonLat([d.lon, d.lat]);
  var element = document.createElement('div');
  element.classList.add('animate-overlay');
  var overlay = new ol.Overlay({
	  element: element,
  })
  map.addOverlay(overlay);
  overlay.setPosition(coord);
}

2、canvas动画实现

var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var gradCircle = new GradCircle(ctx);
var radius = 15,
  changeRadius = 0.5;

var imageLayer = new ol.layer.Image({
  source: null,
  zIndex: 2
});
map.addLayer(imageLayer);
var source = new ol.source.ImageCanvas({
  canvasFunction: canvasFunction
});
imageLayer.setSource(source);
var playFlag = null;


window.requestAnimationFrame =(
  window.webkitRequestAnimationFrame||
  window.mozRequestAnimationFrame||
  window.oRequestAnimationFrame||
  window.msRequestAnimationFrame||
  function(callback){
    return window.setTimeout(callback,1000/60);
  }
);

function refresh() {
  playFlag = window.requestAnimationFrame(refresh);
  source.refresh();
}

map.on('movestart', function () {
  window.cancelAnimationFrame(playFlag);
});
map.on('moveend', function () {
  resetState();
});

function canvasFunction(extent, res, pixelRatio, size) {
  canvas.setAttribute('width', size[0]);
  canvas.setAttribute('height', size[1]);
  ctx.clearRect(0, 0 , size[0], size[1]);
  var mapExtent = map.getView().calculateExtent();
  var mapTopLeft = [mapExtent[0], mapExtent[3]];
  var topLeft = [extent[0], extent[3]];
  var tlSrc = map.getPixelFromCoordinate(topLeft);
  var tlMapSrc = map.getPixelFromCoordinate(mapTopLeft);
  var xOff = tlMapSrc[0] - tlSrc[0],
    yOff = tlMapSrc[1] - tlSrc[1];
  //浏览器存在多方的状态下
  ctx.scale(pixelRatio, pixelRatio);
  for(var i = 0;i<data.length;i++) {
    var d = data[i];
    var lonlat = [d.lon, d.lat];
    var coord = ol.proj.fromLonLat(lonlat);
    if(ol.extent.containsCoordinate(mapExtent, coord)) {
      var pixel = map.getPixelFromCoordinate(coord);
      var x = pixel[0] + xOff,
        y = pixel[1] + yOff;
      d.radius = d.radius + changeRadius;
      if(d.radius > radius * 2) d.radius = radius;
      gradCircle.drawGradCircle(x, y, d.radius);
    }
  }
  return canvas;
}
resetState();
function resetState(){
  for(var i = 0;i<data.length;i++) {
    var d = data[i];
    d.radius = radius;
  }
  refresh();
}

技术博客
CSDN:http://blog.csdn.NET/gisshixisheng
在线教程
https://edu.csdn.net/course/detail/799
https://edu.csdn.net/course/detail/7471
联系方式

类型内容
qq1004740957
公众号lzugis15
e-mailniujp08@qq.com
webgis群452117357
Android群337469080
GIS数据可视化群458292378

LZUGIS

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: echarts地图闪烁是指在echarts地图,一个或多个闪烁的方式显示。闪烁常用于强调地图上的特定位置或重要信息。要实现地图上的闪烁,可以借助echarts的API和一些基本的前端技术。 首先,在echarts添加一个涉及到的图层,可以通过series配置项来实现。在series配置项,设置type为“scatter”,即散图,然后设置data属性,定义散的数据。 接着,可以通过设置散图的样式和动画效果来闪烁。例如,可以通过设置symbol为一个具有动态效果的图标,或者设置itemStyle的color为一个闪烁的色彩。此外,还可以通过设置animation属性来控制闪烁动画效果。可以设置animation为true,然后再设置animationDuration和animationEasing等属性,来实现闪烁效果。 另外,为了实现闪烁,可以利用定时器函数,定时改变散图的样式或位置。例如,可以使用setInterval函数,每隔一段时间就修改散图的样式属性,比如颜色或大小等,从而实现闪烁效果。 需要注意的是,在使用闪烁的同时,要保证地图的其他元素和交互功能正常。可以通过设置echarts的其他配置项,如tooltip、legend等,来完善地图的展示效果。 总结起来,使用echarts地图闪烁可以通过设置散图的样式和动画,以及利用定时器函数来实现。这样可以在地图突出重要的位置或信息,提升地图的可视化效果和交互性。 ### 回答2: echarts是一款强大的数据可视化工具,可以通过它来绘制各种图表,包括地图。当我们在echarts地图上展示数据时,可以通过闪烁效果来引起关注和提醒。 要在echarts地图上实现闪烁效果,我们可以利用echarts的animation和effectScatter两个功能来完成。 首先,我们需要将的数据以特定的格式传入到echarts,并设定的样式和位置。然后,通过设置闪烁效果,我们可以在每次刷新echarts图表时,改变的透明度或颜色,使其呈现出闪烁的效果。 在echarts,可以通过effectScatter来实现闪烁效果。effectScatter是一种特殊的散图类型,通过设置参数interval可以控制闪烁速度。我们可以根据需求来调整闪烁的频率。 通过设置好interval的数值后,echarts会在每一帧刷新图表时改变的透明度或颜色,从而实现闪烁的效果。 除了闪烁效果,我们还可以通过其他配置参数来进一步定制的样式和动画效果,例如调整的大小、颜色、形状等。 综上所述,通过设置echarts的animation和effectScatter功能,我们可以在echarts地图上实现闪烁效果。此功能可用于突出显示重要的位置或事件,并提醒用户关注。 ### 回答3: Echarts地图闪烁是指在使用Echarts地图进行数据可视化时,可以通过闪烁的效果来突出某些特定的数据或者区域。 要实现地图闪烁效果,可以借助Echarts提供的动画效果和数据更新功能。以下是一个简单的实现思路: 1. 首先,根据需要突出显示的数据,准备好对应的地理位置信息和数值。可以通过Echarts提供的geoJSON数据格式来标识地理位置。 2. 在Echarts的配置项,设置相应的数据和样式配置,包括地理位置、数值、颜色等。 3. 使用Echarts提供的animation组件,设置闪烁效果。可以通过在数据更新时,重新设置数据的颜色或者大小等属性来显示闪烁效果。 4. 在数据更新时,根据需要的闪烁频率和时间间隔,使用setInterval()函数或者requestAnimationFrame()函数来定时更新数据。 5. 在数据更新时,通过重新渲染Echarts实例,将新的数据和样式应用到地图上,从而实现闪烁的效果。 需要注意的是,闪烁的效果需要根据具体的需求进行调整。可以通过设置闪烁的频率、透明度、大小等属性来实现不同的效果。同时,为了避免过多的闪烁导致界面混乱,可以对数据进行筛选,只闪烁部分特定的数据。 总之,通过利用Echarts提供的动画和数据更新功能,配合自定义的数据和样式配置,可以实现地图闪烁的效果,使得特定数据或者区域在地图上更加突出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

牛老师讲GIS

感谢老板支持

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

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

打赏作者

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

抵扣说明:

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

余额充值