Echarts类似航班选座如何做一个实时监测设备状态的案例

Echarts类似航班选座如何做一个实时监测设备状态的案例:


问题描述:

Echart关于他的地图的配置项说地不够清楚,项目中想用自己的Svg图片作为地图的地图如何配置怎么做?这是我遇见的问题以及解决方案如下;

在这里插入图片描述
$.get(ROOT_PATH + '/data/asset/geo/flight-seats.svg', function (svg) { echarts.registerMap('flight-seats', { svg: svg });
这是echart给的默认图片以及注册用的代码,稍微解读一下就是他获取了一张SVG,然后将这张SVG注册了,名字叫 flight-seats。


解决方案:

1. 首先我们也要自己去注册一张地图。
在这里我的做法是这样的,首先把SVG图片的代码拿过来用``,把SVG的代码包裹起来并定义成一个变量。如下图
在这里插入图片描述
然后在这里进行注册,前面的名字要和下面的配置项对应
在这里插入图片描述
2. 将SVG代码内需要配置的点(设备或者是你需要改状态的地方)把它的name属性修改。
在这里插入图片描述这里的g是我的点分组的代码,我把他这里的点的name属性改为PO(注意:这里的name必须是唯一值),这样它就有唯一对应的名字了,并且当他拥有name这个属性的时候他就在echart内变为可点击的事件了。

3. 配置Options,配置地图的选项可参考这篇文章 。

本文为CSDN博主「拿我格子衫来」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/github_35631540/article/details/116300038

4. 修改配置里面的regions属性 。
echart示例里面给了一个makeTakenRegions 函数,其实它的本质就是将每个点对应的名字单独地配置了样式属性。代码如下

 function makeTakenRegions(takenSeatNames, bName) {
    
     	
 //传入配置项regions的函数,takenSeatNames,bNanme都是包含着上述点名字的数组,例如takenSeatNames=[PO,AO]
        var regions = [];
        for (var i = 0; i < takenSeatNames.length; i++) {
    
    
          regions.push({
    
    		//最后返回regions这个数组,传入每个名字的配置项,每个名字都是一个对象
            name: takenSeatNames[i],	//传入的名字
            silent: true,
            itemStyle: {
    
    
              color: "#bf0e08",		//初始颜色
            },
            emphasis: {
    
    
              itemStyle: {
    
    	//悬浮的样式
                borderColor: "#aaa",
                borderWidth: 1,
                color: "#bf0e08",
              },
            },
            select: {
    
    	//选中的样式
              itemStyle: {
    
    
                color: "#bf0e08",
              },
            },
          });
        }
        for (var i = 0; i < bName.length; i++) {
    
    	//可以有不同状态,takenSeatNames我用红色,这一类我用白色
          regions.push({
    
    
            name: preAlarmName[i],
            silent: true,
            itemStyle: {
    
    
              color: "#FFDB44",
            },
            emphasis: {
    
    
              itemStyle: {
    
    
                borderColor: "#aaa",
                borderWidth: 1,
                color: "#FFDB44",
              },
            },
            select: {
    
    
              itemStyle: {
    
    
                color: "#FFDB44",
              },
            },
          });
        }
        return regions;
      }

只要takeSeatNames,和bName里面有值,就可以改变点样式的状态。效果如下:
在这里插入图片描述

所以我们可以通过添加一个定时器,以轮询的方式向后端请求各类设备或者是商品的状态,(这里不知道能不能用websocket,大家也可以尝试一下,就不用通过轮询的方式来操作了)。

5. 除了动态地更改商品的状态外,我们还可以添加点击功能 。

echart提供了方法myChart.on("geoselectchanged", function (params) {})
其实就是每个点的点击事件,params是你当前选中的所有点,这个可能是一个也可以是多个,看你Option内写的选择模式是Single,还是multiple。所以当我们从params中拿到这个名字的时候就可以对它进行操作啦,我们可以把他当做参数传给后端,获取这个商品更详细的实时信息了。

猜你喜欢

转载自blog.csdn.net/m0_65035567/article/details/121795318