298 lines
7.3 KiB
Vue
298 lines
7.3 KiB
Vue
<script setup lang="ts">
|
||
const props = defineProps<{
|
||
data: {
|
||
value: number
|
||
name: string
|
||
}[]
|
||
}>()
|
||
|
||
const colorMode = useColorMode()
|
||
const option = shallowRef({
|
||
visualMap: [
|
||
{
|
||
type: 'continuous',
|
||
seriesIndex: 0,
|
||
text: ['bar3D'],
|
||
calculable: true,
|
||
show: false,
|
||
max: 300,
|
||
inRange: {
|
||
color: ['#9ff32b', '#9ff32b'], // 柱图配色
|
||
},
|
||
},
|
||
{
|
||
distance: 250,
|
||
show: false,
|
||
type: 'continuous',
|
||
seriesIndex: 1,
|
||
text: ['scatter3D'],
|
||
left: 'right',
|
||
max: 100,
|
||
calculable: true,
|
||
inRange: {
|
||
color: ['#000', 'blue', 'purple'], // 气泡配色
|
||
},
|
||
},
|
||
],
|
||
geo3D: {
|
||
// zlevel: -10,
|
||
// top: -100,
|
||
type: 'map3D',
|
||
map: 'china',
|
||
name: 'china',
|
||
// zlevel: -10,
|
||
boxWidth: 190,
|
||
boxHeight: 100,
|
||
boxDepth: 150, // 地图倾斜度
|
||
regionHeight: 5, // 地图厚度
|
||
regions: [
|
||
{
|
||
name: '福建',
|
||
regionHeight: 10,
|
||
emphasis: {
|
||
itemStyle: {
|
||
opacity: 0,
|
||
},
|
||
},
|
||
},
|
||
],
|
||
// environment: new graphic.LinearGradient(
|
||
// 0,
|
||
// 0,
|
||
// 0,
|
||
// 1,
|
||
// [
|
||
// {
|
||
// offset: 0,
|
||
// color: "#0a0f1e", // 天空颜色
|
||
// },
|
||
// {
|
||
// offset: 0.5,
|
||
// color: "#0a0f1e", // 地面颜色
|
||
// },
|
||
// {
|
||
// offset: 1,
|
||
// color: "#0f1831", // 地面颜色
|
||
// },
|
||
// ],
|
||
// false
|
||
// ),
|
||
// 标签设置
|
||
/* groundPlane:{
|
||
show:true,
|
||
color:'#aaa'
|
||
}, */
|
||
// label: {
|
||
// show: true, //是否显示市
|
||
// textStyle: {
|
||
// color: "#000", //文字颜色
|
||
// fontSize: 16, //文字大小
|
||
// fontFamily: "微软雅黑",
|
||
// // opacity: 0,
|
||
// backgroundColor: "rgba(0,0,0,0)", //透明度0清空文字背景
|
||
// },
|
||
// },
|
||
// 三维视觉属性
|
||
itemStyle: {
|
||
// opacity: 1, // 透明度
|
||
// color: '#4575b4',//地图颜色
|
||
// borderWidth: 1.5,//分界线宽度
|
||
// borderColor: "#459bca",//分界线颜色
|
||
// areaColor: "#051b3d",
|
||
// color: '#6554C0',
|
||
// opacity: 1,
|
||
borderWidth: 0.5,
|
||
borderColor: '#A299DA',
|
||
},
|
||
// 鼠标hover高亮
|
||
emphasis: {
|
||
label: {
|
||
distance: 200,
|
||
show: true, // 是否显示标签
|
||
textStyle: {
|
||
color: 'yellow', // 高亮文字颜色
|
||
fontSize: 32,
|
||
fontFamily: '微软雅黑',
|
||
},
|
||
formatter: (params: any) => {
|
||
// console.log(params);
|
||
return '{b} : test{c}'
|
||
},
|
||
},
|
||
// 高亮区块颜色
|
||
// itemStyle: {
|
||
// color: '#000'
|
||
// }
|
||
regionHeight: 5,
|
||
itemStyle: {
|
||
color: '#063258',
|
||
// color: '#61A4E4',
|
||
opacity: 0,
|
||
|
||
// borderColor: "#052644",
|
||
borderWidth: 2,
|
||
boxShadow: '10px 10px 10px black',
|
||
},
|
||
},
|
||
light: {
|
||
main: {
|
||
intensity: 1,
|
||
shadow: true,
|
||
shadowQuality: 'ultra',
|
||
},
|
||
},
|
||
groundplane: {
|
||
show: false,
|
||
},
|
||
// data: data,
|
||
|
||
// 用了没有效果,还没找到原因,求指点
|
||
/* regions: [
|
||
{ // 可对单个地图区域进行设置
|
||
name: '昌平区', // 所对应的地图区域的名称
|
||
//regionHeight: '', // 区域的高度,可以设置不同的高度用来表达数据的大小。当 GeoJSON 为建筑的数据时,也可以通过这个值表示简直的高度。
|
||
itemStyle: { // 单个区域的样式设置
|
||
color: '#00FF00',
|
||
opacity: 1,
|
||
borderWidth: 0.4,
|
||
borderColor: '#5F9EA0'
|
||
},
|
||
}, {
|
||
name: '海淀区',
|
||
itemStyle: {
|
||
color: '#EEEE00',
|
||
opacity: 1,
|
||
borderWidth: 0.4,
|
||
borderColor: '#5F9EA0'
|
||
}
|
||
}
|
||
], */
|
||
/*
|
||
shading三维图形的着色效果,值:
|
||
'color'只显示颜色,不受光照等因素影响。
|
||
'lambert'通过景点的lambert着色表现光照的明暗
|
||
'realistic'真是感渲染
|
||
*/
|
||
shading: 'realistic',
|
||
// 真实感材质相关配置 shading: 'realistic'时有效
|
||
realisticMaterial: {
|
||
detailTexture: '#000', // 纹理贴图
|
||
textureTiling: 1, // 纹理平铺,1是拉伸,数字表示纹理平铺次数
|
||
roughness: 0.8, // 材质粗糙度,0完全光滑,1完全粗糙
|
||
metalness: 0, // 0材质是非金属 ,1金属
|
||
roughnessAdjust: 0,
|
||
},
|
||
viewControl: {
|
||
// distance: 150,// 地图视角 控制初始大小
|
||
// rotateSensitivity: 1,// 旋转
|
||
// zoomSensitivity: 1,// 缩放
|
||
projection: 'perspective',
|
||
autoRotate: false,
|
||
damping: 0,
|
||
rotateSensitivity: 1, // 旋转操作的灵敏度
|
||
rotateMouseButton: 'left', // 旋转操作使用的鼠标按键
|
||
zoomSensitivity: 0, // 缩放操作的灵敏度
|
||
// panSensitivity: 2, //平移操作的灵敏度
|
||
// panMouseButton: "right", //平移操作使用的鼠标按键
|
||
|
||
distance: 230, // 默认视角距离主体的距离
|
||
minDistance: 230,
|
||
maxDistance: 230,
|
||
// orthographicSize:150,
|
||
// maxOrthographicSize:150,
|
||
// minOrthographicSize:150,
|
||
minAlpha: 30,
|
||
maxAlpha: 80,
|
||
// bata:20,
|
||
// minBeta: -25,
|
||
// maxBeta: 45,
|
||
|
||
center: [0, 0, 0],
|
||
|
||
animation: true,
|
||
animationDurationUpdate: 1000,
|
||
animationEasingUpdate: 'cubicInOut',
|
||
},
|
||
},
|
||
series: [
|
||
{
|
||
name: '发电量',
|
||
type: 'bar3D',
|
||
coordinateSystem: 'geo3D',
|
||
barSize: 1, // 柱子粗细
|
||
shading: 'lambert',
|
||
opacity: 1,
|
||
bevelSize: 0.2,
|
||
label: {
|
||
show: false,
|
||
formatter: '{b}',
|
||
},
|
||
data: [{ name: '黑龙江', value: [125.03, 46.58, 111] }],
|
||
},
|
||
{
|
||
name: 'Top 5',
|
||
type: 'scatter3D',
|
||
coordinateSystem: 'geo3D',
|
||
symbol: 'pin',
|
||
symbolSize: 30,
|
||
label: {
|
||
normal: {
|
||
show: true,
|
||
textStyle: {
|
||
color: '#fff',
|
||
fontSize: 9,
|
||
},
|
||
formatter(value: any) {
|
||
return value.data.value[2]
|
||
},
|
||
},
|
||
},
|
||
itemStyle: {
|
||
normal: {
|
||
color: '#D8BC58', // 标志颜色
|
||
},
|
||
},
|
||
data: [
|
||
{
|
||
name: '上海',
|
||
value: [121.4648, 31.2891, 0, 444, 44, 444],
|
||
},
|
||
],
|
||
showEffectOn: 'render',
|
||
rippleEffect: {
|
||
brushType: 'stroke',
|
||
},
|
||
hoverAnimation: true,
|
||
zlevel: 1,
|
||
},
|
||
],
|
||
/* dataRange: {
|
||
splitList: splitList
|
||
}, */
|
||
// ECharts 视觉映射「visualMap」组件 注释掉 dataRange 后可查看效果
|
||
// visualMap: {
|
||
// show: false,
|
||
// min: 0,
|
||
// max: 15,
|
||
// inRange: {
|
||
// color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
|
||
// }
|
||
// }
|
||
})
|
||
</script>
|
||
|
||
<template>
|
||
<ClientOnly fallback-tag="div" fallback="Loading comments...">
|
||
<Chart
|
||
class="chart" :options="option"
|
||
/>
|
||
</ClientOnly>
|
||
</template>
|
||
|
||
<style scoped>
|
||
.chart {
|
||
height: 100%;
|
||
width: 100%;
|
||
}
|
||
</style>
|