learning_cesium/echartsMap.html

518 lines
25 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入在线CDN echarts.js -->
<!-- <script src="https://cdn.jsdelivr.net/npm/echarts@5.0.2/dist/echarts.js"></script> -->
<script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小宽高的Dom -->
<div id="main" style="width: 800px;height:600px;"></div>
<script type="text/javascript">
let airData = [
{ name: '北京市', value: 39.92 },
{ name: '天津市', value: 39.13 },
{ name: '上海市', value: 31.22 },
{ name: '重庆市', value: 66 },
{ name: '河北省', value: 147 },
{ name: '河南省', value: 113 },
{ name: '云南省', value: 25.04 },
{ name: '辽宁省', value: 50 },
{ name: '黑龙江省', value: 114 },
{ name: '湖南省', value: 175 },
{ name: '安徽省', value: 117 },
{ name: '山东省', value: 92 },
{ name: '新疆维吾尔自治区', value: 84 },
{ name: '江苏省', value: 67 },
{ name: '浙江省', value: 84 },
{ name: '江西省', value: 96 },
{ name: '湖北省', value: 273 },
{ name: '广西壮族自治区', value: 59 },
{ name: '甘肃省', value: 99 },
{ name: '山西省', value: 39 },
{ name: '内蒙古自治区', value: 58 },
{ name: '陕西省', value: 61 },
{ name: '吉林省', value: 51 },
{ name: '福建省', value: 29 },
{ name: '贵州省', value: 71 },
{ name: '广东省', value: 38 },
{ name: '青海省', value: 57 },
{ name: '西藏自治区', value: 24 },
{ name: '四川省', value: 58 },
{ name: '宁夏回族自治区', value: 52 },
{ name: '海南省', value: 54 },
{ name: '台湾省', value: 88 },
{ name: '香港特别行政区', value: 66 },
{ name: '澳门特别行政区', value: 77 },
{ name: '南海诸岛', value: 55 }
];
let url = "https://geo.datav.aliyun.com/areas_v3/bound/440000_full.json";
let url_boundary = "https://geo.datav.aliyun.com/areas_v3/bound/100000_boundary.json";
let url1 = '/data/echart_map_json/china1.json';
let url1_main = '/data/echart_map_json/main.json';
let url1_three = '/data/echart_map_json/ss.json';
let url1_boundary = '/data/echart_map_json/boundary1.json';
let url1_single = '/data/echart_map_json/single.json';
let promiseArr = [];
promiseArr.push(fetch(url1).then(res=>res.json()))
promiseArr.push(fetch(url1_single).then(res=>res.json()))
Promise.allSettled(promiseArr).then((result)=>{
console.log(result)
// 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
result[1].value.UTF8Encoding=false
// result[1].value.features = result[1].value.features.filter(item=>item.properties.id!=='2')
result[1].value.features[0].id = 1
result[1].value.features[1].id = 2
//在echarts中注册地图矢量数据
echarts.registerMap('china1',result[0].value);
echarts.registerMap('boundary1',result[1].value);
//option定义
let option3d = {
tooltip: {
show: false,
formatter: (params) => {
return `<div style="position:absolute;left:0;top:0;width:8px;height:8px;background-color:#FD9A5A;"></div>
<div class='tips' style="padding:0 12px;">
<h1 style='font-size:16px;'>${params.name}</h1>
<p style="font-size:14px;"><span style="opacity:0.75">办理人数:</span>22人</p>
<p style="font-size:14px;"><span style="opacity:0.75">待办人数:</span>22人</p>
<p style="font-size:14px;"><span style="opacity:0.75">办结人数:</span>22人</p>
</div>`;
},
borderColor: "#998484",
borderWidth: 1,
padding: [0, 0],
backgroundColor: "#1B212B",
borderRadius: 0,
// textStyle: { color: "blue" },
},
visualMap: {
show: true,
min: 1, //指定 visualMapContinuous 组件的允许的最小值。
max: 9, //指定 visualMapContinuous 组件的允许的最大值
inRange: {
color: ["#074b4f"],
},
calculable: true, //是否显示拖拽用的手柄(手柄能拖拽调整选中范围)。
},
series: [
{
name: "main",
type: "map3D",
map: 'china1', //地图类型。echarts-gl 中使用的地图类型同 geo 组件相同
regionHeight: 2, //模型的高度
boxWidth: 100, //三维地图在三维场景中的宽度
//boxHeight:50,
boxDepth: 65, //三维地图在三维场景中的深度
// top: "10%",
//left:'10%',
// 配置为垂直渐变的背景
environment: 'images/53bg.png',
groundPlane:{
show:false
},
label: {
show: false, //是否显示标签。
position: ["50%", "50%"],
formatter: (params) => {
params.name;
},
textStyle: {
color: "rgba(255,255,255,0.65)", //地图初始化区域字体颜色
fontSize: 16,
opacity: 1,
backgroundColor: "#1B212B ",
borderColor: "#998484",
borderWidth: 1,
position: "insideTop",
padding: [6, 8],
borderRadius: 0,
distanca: 20,
},
emphasis: {
//对应的鼠标悬浮效果
show: true,
// textStyle: { color: "blue" }
},
},
itemStyle: {
normal: {
// 静态模式下显示的默认样式
borderWidth: 1,
borderColor: "#21cac7",
color: "#0e838b",
}, //阴影效果
emphasis: {
// 鼠标移上去的样式
borderWidth: 1.6,
borderColor: "#95FFFF",
color: "#108f97",
textStyle: {
// color:'blue'
},
},
},
// data:[
// {
// name:'广东',
// itemStyle:{
// // 静态模式下显示的默认样式
// borderWidth: 1.5,
// borderColor: "#fff",
// color: "#fff",
// opacity :0.5
// }
// }
// ],
viewControl: {
center:[0,0,0],//视角中心点,旋转也会围绕这个中心点旋转,默认为[0,0,0]。
//用于鼠标的旋转,缩放等视角控制。
autoRotate: false, //是否开启视角绕物体的自动旋转查看
distance: 70, //默认视角距离主体的距离,对于 globe 来说是距离地球表面的距离,对于 grid3D 和 geo3D 等其它组件来说是距离中心原点的距离。在 projection 为'perspective'的时候有效。
alpha:45,//视角绕 x 轴,即上下旋转的角度。配合 beta 可以控制视角的方向。
beta:0,//视角绕 y 轴,即左右旋转的角度。
distance:80,//默认视角距离主体的距离,对于 globe 来说是距离地球表面的距离,对于 grid3D 和 geo3D 等其它组件来说是距离中心原点的距离。在 projection 为'perspective'的时候有效。
},
},
// {
// name: "attach",
// type: "map3D",
// map: 'boundary', //地图类型。echarts-gl 中使用的地图类型同 geo 组件相同
// regionHeight: 2, //模型的高度
// boxWidth: 100, //三维地图在三维场景中的宽度
// //boxHeight:50,
// boxDepth: 65, //三维地图在三维场景中的深度
// itemStyle: {
// normal: {
// // 静态模式下显示的默认样式
// borderWidth: 1.6,
// borderColor: "#21cac7",
// color: "#0e838b",
// }, //阴影效果
// // emphasis: {
// // // 鼠标移上去的样式
// // borderWidth: 1.6,
// // borderColor: "#95FFFF",
// // color: "#108f97",
// // textStyle: {
// // // color:'blue'
// // },
// // },
// },
// }
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option3d);
})
function drawCharts(){
fetch(url1).then(function(response){
return response.json();
}).then(function(result){
console.log(result);
// 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
//在echarts中注册地图矢量数据
echarts.registerMap('china1',result);
// 指定图表的配置项和数据
// var option = {
// //配置地理坐标系组件
// geo:{
// type: 'map',
// map: 'china1',
// roam: true, //设置允许缩放以及拖动的效果
// label:{
// show: false,
// fontSize: 10
// },
// // zoom: 4, //初始化缩放比例
// center: [108.948024,34.263161] //设置初始化中心点
// },
// series: [
// {
// data: airData,
// geoIndex: 0, // 将空气质量的数据和第0个geo配置关联在一起
// type: 'map'
// }
// ],
// visualMap: {
// min: 0,
// max: 300,
// inRange: {
// symbolSize: [30, 100],
// color: ['white', 'red'] // 控制颜色渐变的范围
// },
// calculable: true // 出现滑块
// }
// };
var imgBase = 'http://127.0.0.1:5501/images/boundary_three.png'
// var option = {
// //配置地理坐标系组件
// geo: {
// type: 'map',
// map: 'china1',
// roam: true, //设置允许缩放以及拖动的效果
// label: {
// show: false,
// fontSize: 10
// },
// zoom: 4, //初始化缩放比例
// center: [113.75, 23.04] //设置初始化中心点
// },
// series: [
// {
// data: airData,
// geoIndex: 0, // 将空气质量的数据和第0个geo配置关联在一起
// type: 'map'
// }, {
// // 配置散点的坐标数据
// data: [ { name: '东莞', value: [113.75, 23.04] },],
// type: 'scatter',
// // 指明散点使用的坐标系统 geo的坐标系统
// // 可选值:'cartesian2d'、'polar'、'geo'、'bmap'
// coordinateSystem: 'geo',
// rippleEffect: {
// color: '#ccc',//涟漪动画的颜色
// scale: 3 // 设置涟漪动画的缩放比例
// },
// // symbolSize:[10,20],
// // showEffectOn: 'emphasis',
// symbol:"image://"+imgBase,
// label:{
// color: '#219ebc',
// show: true,
// formatter:function(row){
// return row.name;
// }
// },
// itemStyle:{
// color: '#ccc'
// }
// }
// ],
// visualMap: {
// min: 0,
// max: 300,
// inRange: {
// symbolSize: [30, 100],
// color: ['white', 'red'] // 控制颜色渐变的范围
// },
// calculable: true // 出现滑块
// }
// };
var optionsrc = {
geo: {
map: 'china1',
roam: true,
},
series: [
{
name: 'pm2.5',
type: 'scatter',
coordinateSystem: 'geo',
select:false,
silent :true,
data: [
{
name: 'test',
value: [121.113747, 22.285694],
symbol: 'image://http://192.168.4.109:5501/images/boundary_three.png',
symbolSize: 100,
},
{
name: 'test',
value: [128.113747, 20.8],
symbol: 'image://http://192.168.4.109:5501/images/boundary_attach.png',
symbolSize: 65,
}
],
// encode: {
// value: 2
// },
// emphasis: {
// label: {
// show: true
// }
// }
}
]
}
let option = {
geo: {
map: "china1",
center: [105.194115019531, 35.582111640625],
aspectScale: 0.75, //长宽比
zoom:1.1,
roam: false,
itemStyle: {
normal: {
areaColor: "#013C62",
shadowColor:"#01273F",
shadowOffsetX:0,
shadowOffsetY:10
},
emphasis: {
label:{
show:false
}
}
}
},
series: [
{
type: "map",
map: "china1",
center: [105.194115019531, 35.582111640625],
zoom:1.1,
// geoIndex: 1,
aspectScale: 0.75, //长宽比
roam: false,
emphasis: {
label:{
show:false
}
},
itemStyle: {
normal: {
areaColor: "#013C62",
borderColor: "#0A5E96",
borderWidth: 2
}
}
}
]
};
//option定义
let option3d = {
tooltip: {
show: false,
formatter: (params) => {
return `<div style="position:absolute;left:0;top:0;width:8px;height:8px;background-color:#FD9A5A;"></div>
<div class='tips' style="padding:0 12px;">
<h1 style='font-size:16px;'>${params.name}</h1>
<p style="font-size:14px;"><span style="opacity:0.75">办理人数:</span>22人</p>
<p style="font-size:14px;"><span style="opacity:0.75">待办人数:</span>22人</p>
<p style="font-size:14px;"><span style="opacity:0.75">办结人数:</span>22人</p>
</div>`;
},
borderColor: "#998484",
borderWidth: 1,
padding: [0, 0],
backgroundColor: "#1B212B",
borderRadius: 0,
// textStyle: { color: "blue" },
},
visualMap: {
show: true,
min: 1, //指定 visualMapContinuous 组件的允许的最小值。
max: 9, //指定 visualMapContinuous 组件的允许的最大值
inRange: {
color: ["#074b4f"],
},
calculable: true, //是否显示拖拽用的手柄(手柄能拖拽调整选中范围)。
},
series: {
name: "浙江",
type: "map3D",
map: 'china1', //地图类型。echarts-gl 中使用的地图类型同 geo 组件相同
regionHeight: 2, //模型的高度
boxWidth: 100, //三维地图在三维场景中的宽度
//boxHeight:50,
boxDepth: 65, //三维地图在三维场景中的深度
// top: "10%",
//left:'10%',
// 配置为垂直渐变的背景
environment: 'images/53bg.png',
groundPlane:{
show:false
},
label: {
show: false, //是否显示标签。
position: ["50%", "50%"],
formatter: (params) => {
params.name;
},
textStyle: {
color: "rgba(255,255,255,0.65)", //地图初始化区域字体颜色
fontSize: 16,
opacity: 1,
backgroundColor: "#1B212B ",
borderColor: "#998484",
borderWidth: 1,
position: "insideTop",
padding: [6, 8],
borderRadius: 0,
distanca: 20,
},
emphasis: {
//对应的鼠标悬浮效果
show: true,
// textStyle: { color: "blue" }
},
},
itemStyle: {
normal: {
// 静态模式下显示的默认样式
borderWidth: 1,
borderColor: "#21cac7",
color: "#0e838b",
}, //阴影效果
emphasis: {
// 鼠标移上去的样式
borderWidth: 1.6,
borderColor: "#95FFFF",
color: "#108f97",
textStyle: {
// color:'blue'
},
},
},
data:[
{
name:'广东',
itemStyle:{
// 静态模式下显示的默认样式
borderWidth: 1.5,
borderColor: "#fff",
color: "#fff",
opacity :0.5
}
}
],
viewControl: {
//用于鼠标的旋转,缩放等视角控制。
autoRotate: false, //是否开启视角绕物体的自动旋转查看
distance: 70, //默认视角距离主体的距离,对于 globe 来说是距离地球表面的距离,对于 grid3D 和 geo3D 等其它组件来说是距离中心原点的距离。在 projection 为'perspective'的时候有效。
},
},
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
});
}
</script>
</body>
</html>