echarts实现指南针效果


效果图:

 

 代码部分:

<template>
  <div class="compassSty">
    <div id="OriengaugeId" class="cesiumContainer"></div>
  </div>
</template>
<script>
import * as echarts from "echarts";
export default {
  props: ["OriengaugeId", "GaugeList"],
  data() {
    return {};
  },
  mounted() {
    this.$nextTick(() => {
      this.drawgauge("OriengaugeId");
    });
  },
  methods: {
    drawgauge(id) {
      let GaugeEcharts = echarts.init(document.getElementById(id));
      GaugeEcharts.setOption({
        tooltip: {
          show: false,
          formatter: "{a} <br/>{b} : {c}级",
        },
        grid: {},
        series: [
          // 这里是我们需要用到的仪表盘
          {
            startAngle: 90,
            endAngle: -270,
            min: 0,
            max: 360,
            z: 8,
            center: ["50%", "50%"],
            radius: "70%",
            type: "gauge",
            axisTick: {
              show: false,
            },
            //仪表盘指针。
            pointer: {
              show: true,
              // 指针样式
              icon: "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAiCAMAAABcDciTAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABFFBMVEX/AAD/AAH/AQL/AQH/AAL/////AAD/AAH/AQL/AAD/AAD/AAD/AAD/AAH/AAD/AQL/AQL/AAD/AAL/AAD/AAD/AAH/AAD/AAD/AAD/AAD/AQH/AAD/AAD/AAD/AQL/AAD/AAD/AAD/AAD/AAL/AAD/AAD/AAD/AAD/AAD/AAH/AAL/AAD/AAL/Cgr/Dg7/Cgr/Dg//DQ//DQ7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAD/AAH/AQL/AQH/AAL///8EndKmAAAAVnRSTlMAAAAAAAAXJ2R4s8gM9v4aUGmguQPr+g8+W4yq3PMHK0x6m8jpAho9Zowatdwx9PX09PQxGrXcZoz+PcjpAnqbK0zzB6o+WwPr+g+guVBpDPazZHgXJ2NJFc8AAAABYktHRAX4b+nHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5QcVBiY1zlpgmQAAAOZJREFUGNNNzOdawkAQheHROIoNe+8NKy5KRBB771gPCXv/92FmdhM8P5Lv3WcTIll3T4eMOmW5Xmqvr1/PtAcG80MKeQwDI9mtUWAs7fEJYHLKY7qJJmakgiCYTRpz/m/zQISFRcWSdBwt6ycrEGFVsQa0YmB9I+lCHm6bRF1bcgdxjG2inV09biHaK1Bx35jSQcmYQ1Okss1WpvAo7UpIfJyiysRhzeMkAdddn54Jzh0uWHDpcKXgivT1jUNVcMsOd4J7j4dHa5+ePfjF2ldO8Wbte4bGRy3MwJ91buPr+x9+fvX1BzPHP7+pF5ngAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTA3LTIxVDA2OjM4OjI2KzAwOjAwIPtDQAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wNy0yMVQwNjozODo1MyswMDowMAlb3UIAAAAASUVORK5CYII=",
              length: "50%", //指针长度
              width: "10%",//指针宽度
              offsetCenter: [0, "25%"],//指针位置
              keepAspect: true,
              itemStyle: {
                color: "#ffc600",
              },
            },
            // 坐标轴线,也就是圆圈的边框线
            axisLine: {
              show: false,
            },
            // 分割线
            splitLine: {
              show: true,
              length: "100%",
              lineStyle: {
                color: "#fff",
                width: 1,
              },
            },
            splitNumber: 4,
            // 刻度标签
            axisLabel: {
              show: true,
              color: "#fff",
              distance: 120,
              fontSize: 26,
              formatter: function (value) {
                switch (value) {
                  case 0:
                    return "S";
                  case 90:
                    return "W";
                  case 180:
                    return "N";
                  case 270:
                    return "E";
                  default:
                    break;
                }
              },
            },
            //最下边数值的设置
            detail: {
              show: false,
            },
            data: [
              {
                value: [230],
              },
            ],
          },
          //这里是内部填充用的饼图
          {
            type: "pie",
            startAngle: 90,
            radius: "80%",
            emphasis: {
              scale: false,
            },
            legendHoverLink: false,
            lable: {
              show: false,
              emphasis: {
                show: false,
              },
            },
            labelLine: {
              show: false,
            },
            center: ["50%", "50%"],
            z: -10,
            data: [
              {
                value: 100,
                itemStyle: {
                  color: "#3450a4",
                },
              },
            ],
          },
        ],
      });
      setTimeout(function () {
        window.onresize = function () {
          GaugeEcharts.resize();
        };
      }, 200);
    },
  },
};
</script>
<style lang="less" scoped>
.compassSty {
  width: 400px;
  height: 400px;
  position: absolute;
  top: 40%;
  left: 50%;
}
.cesiumContainer {
  width: 100%;
  height: 100%;
}
</style>

ps:根据echarts文档调整获取自己所需要的样式,这里只是一个简单的demo效果


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM