优化图例显示
This commit is contained in:
@@ -2,14 +2,22 @@
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
class="legend-container"
|
class="legend-container"
|
||||||
v-show="useStatusStore().uiComponents.leftLegend.show"
|
v-show="
|
||||||
|
useStatusStore().uiComponents.leftLegend.show &&
|
||||||
|
Object.keys(useLeftLegendStore().legendListInfo).length > 0
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="legend-box"
|
||||||
|
v-for="key in Object.keys(useLeftLegendStore().legendListInfo)"
|
||||||
|
:key="key"
|
||||||
>
|
>
|
||||||
<div class="legend-title">
|
<div class="legend-title">
|
||||||
{{ useLeftLegendStore().legendListInfo.title }}
|
{{ useLeftLegendStore().legendListInfo[key].title }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="legend-item"
|
class="legend-item"
|
||||||
v-for="(item, index) in useLeftLegendStore().legendListInfo.list"
|
v-for="(item, index) in useLeftLegendStore().legendListInfo[key].list"
|
||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
@@ -21,6 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
@@ -35,14 +44,10 @@
|
|||||||
left: 20px;
|
left: 20px;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
position: absolute;
|
|
||||||
bottom: 10px;
|
|
||||||
left: 15px;
|
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
z-index: 1000;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
gap: 30px;
|
||||||
width: 240px;
|
min-width: 240px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
||||||
color: white;
|
color: white;
|
||||||
@@ -51,6 +56,10 @@
|
|||||||
border: 1px solid rgb(0, 225, 255);
|
border: 1px solid rgb(0, 225, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.legend-box:not(:last-child) {
|
||||||
|
border-right: 1px solid rgb(0, 225, 255);
|
||||||
|
}
|
||||||
|
|
||||||
.legend-title {
|
.legend-title {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
|||||||
@@ -61,12 +61,10 @@ export const useLayerControl = () => {
|
|||||||
useStatusStore().poiLayers.showPopulationGrid.loading = true;
|
useStatusStore().poiLayers.showPopulationGrid.loading = true;
|
||||||
|
|
||||||
if (useStatusStore().poiLayers.showPopulationGrid.show) {
|
if (useStatusStore().poiLayers.showPopulationGrid.show) {
|
||||||
// 显示图例
|
// 添加图例
|
||||||
useStatusStore().uiComponents.leftLegend.loading = true;
|
useLeftLegendStore().legendListInfo.population = {
|
||||||
useStatusStore().uiComponents.leftLegend.show = true;
|
title: '人口密度图例',
|
||||||
|
list: [
|
||||||
useLeftLegendStore().legendListInfo.title = '人口密度图例';
|
|
||||||
useLeftLegendStore().legendListInfo.list = [
|
|
||||||
{
|
{
|
||||||
label: 'Min-0 < 100',
|
label: 'Min-0 < 100',
|
||||||
color: '#b1fe02',
|
color: '#b1fe02',
|
||||||
@@ -99,10 +97,11 @@ export const useLayerControl = () => {
|
|||||||
label: '10000 ≤ X < Max',
|
label: '10000 ≤ X < Max',
|
||||||
color: '#ff0000',
|
color: '#ff0000',
|
||||||
},
|
},
|
||||||
];
|
],
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
// 隐藏图例
|
// 隐藏图例
|
||||||
useStatusStore().uiComponents.leftLegend.show = false;
|
delete useLeftLegendStore().legendListInfo.population;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -15,11 +15,10 @@ export const useRightHandle = () => {
|
|||||||
useStatusStore().weatherLayers.showRainfallGrid.loading = true;
|
useStatusStore().weatherLayers.showRainfallGrid.loading = true;
|
||||||
useStatusStore().weatherLayers.showRainfallGrid.show = true;
|
useStatusStore().weatherLayers.showRainfallGrid.show = true;
|
||||||
|
|
||||||
// 显示图例
|
// 添加图例
|
||||||
useStatusStore().uiComponents.leftLegend.loading = true;
|
useLeftLegendStore().legendListInfo.precipitation = {
|
||||||
useStatusStore().uiComponents.leftLegend.show = true;
|
title: '降雨量图例',
|
||||||
useLeftLegendStore().legendListInfo.title = '降雨量图例';
|
list: [
|
||||||
useLeftLegendStore().legendListInfo.list = [
|
|
||||||
{
|
{
|
||||||
label: '无雨/微雨; <0.1mm/12h',
|
label: '无雨/微雨; <0.1mm/12h',
|
||||||
color: 'rgba(200,200,200,0)',
|
color: 'rgba(200,200,200,0)',
|
||||||
@@ -48,13 +47,14 @@ export const useRightHandle = () => {
|
|||||||
label: '特大暴雨; >140mm/12h',
|
label: '特大暴雨; >140mm/12h',
|
||||||
color: 'rgba(255,0,0,0.9)',
|
color: 'rgba(255,0,0,0.9)',
|
||||||
},
|
},
|
||||||
];
|
],
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
// 关闭暴雨模拟:隐藏降雨栅格图层
|
// 关闭暴雨模拟:隐藏降雨栅格图层
|
||||||
useStatusStore().weatherLayers.showRainfallGrid.show = false;
|
useStatusStore().weatherLayers.showRainfallGrid.show = false;
|
||||||
|
|
||||||
// 隐藏图例
|
// 删除图例
|
||||||
useStatusStore().uiComponents.leftLegend.show = false;
|
delete useLeftLegendStore().legendListInfo.precipitation;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,14 @@ import { ref, type Ref } from 'vue';
|
|||||||
* 左侧图例信息
|
* 左侧图例信息
|
||||||
*/
|
*/
|
||||||
export const useLeftLegendStore = defineStore('leftLegend', () => {
|
export const useLeftLegendStore = defineStore('leftLegend', () => {
|
||||||
const legendListInfo: Ref<{
|
const legendListInfo: Ref<
|
||||||
|
Record<
|
||||||
|
string,
|
||||||
|
{
|
||||||
title: string;
|
title: string;
|
||||||
list: { label: string; color: string }[];
|
list: { label: string; color: string }[];
|
||||||
}> = ref({
|
}
|
||||||
title: '',
|
>
|
||||||
list: [],
|
> = ref({});
|
||||||
});
|
|
||||||
return { legendListInfo };
|
return { legendListInfo };
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ export const useStatusStore = defineStore('status', () => {
|
|||||||
loading: true,
|
loading: true,
|
||||||
},
|
},
|
||||||
leftLegend: {
|
leftLegend: {
|
||||||
show: false,
|
show: true,
|
||||||
loading: false,
|
loading: true,
|
||||||
},
|
},
|
||||||
rightButton: {
|
rightButton: {
|
||||||
show: true,
|
show: true,
|
||||||
@@ -215,8 +215,8 @@ export const useStatusStore = defineStore('status', () => {
|
|||||||
loading: true,
|
loading: true,
|
||||||
};
|
};
|
||||||
uiComponents.leftLegend = {
|
uiComponents.leftLegend = {
|
||||||
show: false,
|
show: true,
|
||||||
loading: false,
|
loading: true,
|
||||||
};
|
};
|
||||||
uiComponents.rightButton = {
|
uiComponents.rightButton = {
|
||||||
show: true,
|
show: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user