echarts 实现空心饼状图 中间展示选中块内容 带默认展示文本效果

实现效果

默认文本展示
在这里插入图片描述
选中块文本展示
在这里插入图片描述

实现代码

// echarts的label配置
  label: {
    show: true, // show属性很关键 show为true时 初始化时即会展示默认文本;show为false时,只有在鼠标悬浮在块上时 才会展示相应文本
    position: 'center', // 文本展示位置
    formatter:() => { // 格式化要展示的文本
      return `{key|管线总长}\n{length|${totalCount}km}` // totalCount为自定义需要展示的属性 默认文本
    },
    rich: {
    //文本样式
      key:{
        fontSize: 25,
        fontFamily : "微软雅黑",
        color:'#454c5c',
        backgroundColor:"white" // 解决偶现文本重叠问题
      },
      length: {
        fontFamily : "微软雅黑",
        fontSize: 16,
        color:'#6c7a89',
        lineHeight:30,
        backgroundColor:"white" // 解决偶现文本重叠问题
      },
    }
  },
  labelLayout:{
    hideOverlap:true // 隐藏重叠的标签
  },
  -------------------------
  // 添加鼠标移入移出事件的监听
   this.$nextTick(()=>{
    //鼠标移开的监听事件 展示默认字段
     this.$refs.pieChart.pieChart.on('mouseout', ()=>{
       this.$refs.pieChart.pieChart.setOption({
        series:{
           label:{
             show:true,
             formatter:() => {
               return `{key|管线总长}\n{length|${this.totalCount}km}`
             },
           }
         }
       })
     })
    //鼠标移入的监听事件 展示移入块的相关字段
     this.$refs.pieChart.pieChart.on('mouseover', ()=>{
       this.$refs.pieChart.pieChart.setOption({
        series:{
           label:{
             show:false, // 不将show置为false 会出现文本重叠
             formatter:(item) => { // item是遍历的每一个data数据项
             	// 格式化要展示的每个项的文本格式
               let {name} = item;
               let arr = name.split("/")
               return `{key|${arr[0]}}\n{length|${arr[2]}}`
             },
           }
         }
       })
     })
   })
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要让cesium点击后显示eacharts饼图,我们需要进行一些步骤。 首先,我们需要将cesium和eacharts两个库引入到项目中。可以通过在HTML文件的头部添加相应的script标签来实现。例如: ``` <script src="cesium.js"></script> <script src="eacharts.js"></script> ``` 接下来,我们需要创建一个cesium点击事件监听器。可以使用cesium的Entity类来创建一个可点击的实体。例如: ``` var entity = viewer.entities.add({ name : 'Click entity', position : Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883), ellipsoid : { radii : new Cesium.Cartesian3(200000.0, 200000.0, 300000.0), material : Cesium.Color.RED.withAlpha(0.5), outline : true, outlineColor : Cesium.Color.BLACK } }); viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(movement) { var pickedObject = viewer.scene.pick(movement.position); if (Cesium.defined(pickedObject) && pickedObject.id === entity) { // 点击实体时执行的操作 showPieChart(); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK); ``` 上述代码在地图上创建了一个红色的球体实体,并为其添加了点击事件监听器。当点击该实体时,将调用showPieChart函数来显示饼图。 最后,我们需要在showPieChart函数中实现将eacharts饼图显示出来的逻辑。可以通过在HTML文件中创建一个具有特定ID的div元素来显示饼图。并使用eacharts库的API来生成饼图数据和配置。例如: ``` function showPieChart() { var pieChartDiv = document.getElementById('pieChartDiv'); // 使用eacharts生成饼图数据和配置 var chart = echarts.init(pieChartDiv); var option = { series: [{ type: 'pie', data: [ {value: 335, name: 'Apple'}, {value: 310, name: 'Banana'}, {value: 234, name: 'Orange'}, {value: 135, name: 'Grapes'}, {value: 1548, name: 'Watermelon'} ] }] }; // 渲染饼图 chart.setOption(option); } ``` 上述代码将饼图数据和配置传递给echarts.init函数,并将其渲染在具有特定ID的div元素上,从而显示饼图。 通过以上步骤,我们可以在cesium点击实体时显示eacharts饼图。当点击实体时,将触发相应的点击事件监听器,并调用showPieChart函数来显示饼图。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值