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效果
新手理解,若有误,请各位大佬指点,Thanks♪(・ω・)ノ

浙公网安备 33010602011771号