三原县地图可视化大屏数据 三原县地图.js

三原县地图可视化大屏数据

前言

可视化大屏数据
在学习地图可视化数据的时候,发现在网上只能找到省、市、县的地图json数据,到县级别只能到县,数据却不能精确到镇。网上没有三原精确到镇的json数据,于是自己根据网上教程,自己制作并完成了陕西省三原县的地图数据,已经精确到镇,原始地图数据取决于Bigemap。

一、新建前端项目

开发工具:HBuilder
项目框架

二、编写代码

1.编写代码

<!DOCTYPE html>

<html lang="zh-CN">
	<head>
		<meta charset="utf-8" />
	    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
	    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
		<title>三原县地图数据可视化</title>
		<link rel="stylesheet" href="css/bootstrap.min.css" />
		<link rel="stylesheet" href="css/app.css" />
		<style type="text/css">				
			.biao1{
				margin: -0% 1%;
				float: left;
				font-size:15px ;			   
				color: white;
			}
			
			#cg{
			 margin: -0% 4%;
			 float: right;
			 color: white;
			}
		</style>
	</head>
	
	<body class="bg01">
		<header class="header">			
			<h3>三原县地图数据可视化</h3>
			<span class="biao1">数据由Bigemap、百度提供</span>
			<span id="cg">2021/6/4 &nbsp; 12:00:00</span>
		</header>		
		<div class="wrapper">
			<div class="container-fluid">
				<div class="row fill-h">
					<div class="col-lg-3 fill-h">
						<div class="xpanel-wrapper xpanel-wrapper-2">
							<div class="xpanel">
								<!-- 地图飞线 -->
								<div class="fill-h" id="flyMap"></div>
							</div>
						</div>
						<div class="xpanel-wrapper xpanel-wrapper-2">
							<div class="xpanel">
								<!-- 地图 -->
								<div class="fill-h" id="worldMap"></div>
							</div>
						</div>
					</div>
					<div class="col-lg-6 fill-h">
						<div class="xpanel-wrapper xpanel-wrapper-1">
							<div class="xpanel">
								<!-- 地图散点 -->
								<div class="fill-h" id="scatterMap"></div>
							</div>
						</div>
					</div>
					<div class="col-lg-3 fill-h">
						<div class="xpanel-wrapper xpanel-wrapper-2">
							<div class="xpanel">
								<!-- 地图 -->
								<div class="fill-h" id="provinceMap"></div>
							</div>
						</div>
						<div class="xpanel-wrapper xpanel-wrapper-2">
							<div class="xpanel">
								<!-- 地图 -->
								<div class="fill-h" id="cityMap"></div>
							</div>
						</div>
						
					</div>
				</div>
			</div>
		</div>
		
		<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
		<script type="text/javascript" src="js/echarts-3.8.5.min.js"></script>
		<script type="text/javascript" src="js/map/sanyuan.js"></script>
		<script type="text/javascript" src="js/map/lingqian.js"></script>		
		
		<script type="text/javascript">
			//时间js
			setInterval("cg.innerHTML=new Date().toLocaleString()", 1000);
			$(function() {
				/******************* 地图飞线 ******************/
				//初始化echarts实例
				const flyMap = echarts.init(document.getElementById("flyMap"));
		        //城市经纬度
		        const originName = '三原县人民政府';
		        const flyGeo = {					
		        	'城关镇': [108.95101 , 34.61900],
		            '渠岸镇': [108.99672 , 34.62704],
		            '陵前镇': [108.99914 , 34.76526],
		            '新兴镇': [108.90138 , 34.78284],
		            '陂西镇': [109.11559 , 34.62462],
		            '鲁桥镇': [108.93353 , 34.69138],
		            '大程镇': [109.09528 , 34.67382],
		            '西阳镇': [109.01959 , 34.66483],
		            '独李镇': [109.08974 , 34.63880],
		            '嵯峨镇': [108.91569 , 34.72466],					
		            '安乐镇': [109.02476 , 34.60192],
					'三原县人民政府': [108.94720 , 34.62353]
		        };
		        //飞线数据
		        var flyVal = [
		            [{name: '三原县人民政府'}, {name: '城关镇', value: 100}],
		            [{name: '三原县人民政府'}, {name: '渠岸镇', value: 35}],
		            [{name: '三原县人民政府'}, {name: '陵前镇', value: 25}],
		            [{name: '三原县人民政府'}, {name: '新兴镇', value: 55}],
		            [{name: '三原县人民政府'}, {name: '陂西镇', value: 60}],
		            [{name: '三原县人民政府'}, {name: '鲁桥镇', value: 45}],
		            [{name: '三原县人民政府'}, {name: '大程镇', value: 35}],
		            [{name: '三原县人民政府'}, {name: '西阳镇', value: 35}],
		            [{name: '三原县人民政府'}, {name: '独李镇', value: 40}],
		            [{name: '三原县人民政府'}, {name: '嵯峨镇', value: 45}],
		            [{name: '三原县人民政府'}, {name: '安乐镇', value: 50}],				
		           
		        ];
		        //数据转换,转换后格式:[{fromName:'cityName', toName:'cityName', coords:[[lng, lat], [lng, lat]]}, {...}]
		        const convertFlyData = function(data) {
		            let res = [];
		            for(let i=0;i<data.length;i++) {
		                let dataItem = data[i];
		                let toCoord = flyGeo[dataItem[0].name];
		                let fromCoord = flyGeo[dataItem[1].name];
		                if(fromCoord && toCoord) {
		                    res.push({
		                        fromName: dataItem[1].name, 
		                        toName: dataItem[0].name, 
		                        coords: [fromCoord, toCoord]
		                    });
		                }
		            }
		            return res;
		        };
		        //报表配置
		        const flySeries = [];
		        [[originName, flyVal]].forEach(function(item, i) {
					flySeries.push({   
				        name: item[0],
				        type: 'lines',
				        zlevel: 1,
				        symbol: ['none', 'none'],
				        symbolSize: 0,
				        effect: { //特效线配置
				            show: true,
				            period: 5, //特效动画时间,单位s
				            trailLength: 0.1, //特效尾迹的长度,从0到1
				            symbol: 'arrow',
				            symbolSize: 5
				        },
				        lineStyle: {
				            normal: {
				                color: '#f19000',
				                width: 1,
				                opacity: 0.6,
				                curveness: 0.2 //线的平滑度
				            }
				        },
				        data: convertFlyData(item[1])
				    }, {
				        name: item[0],
				        type: 'effectScatter',
				        coordinateSystem: 'geo',
				        zlevel: 2,
				        rippleEffect: { //涟漪特效
				            period: 5, //特效动画时长 
				            scale: 4, //波纹的最大缩放比例
				            brushType: 'stroke' //波纹的绘制方式:stroke | fill
				        },
				        label: {
							//显示地图名称
				            normal: {
				                show: true,
				                position: 'right',
				                formatter: '{b}'
				            }
				        },
				        symbol: 'circle',
				        symbolSize: function (val) {
				        	//根据某项数据值设置符号大小
				            return val[2] / 10; 
				        },
				        itemStyle: {
				            normal: {
				            	color: '#f19000'
				            }
				        },
				        data: item[1].map(function(dataItem) {
				            return {
				                name: dataItem[1].name,
				                value: flyGeo[dataItem[1].name].concat([dataItem[1].value])
				            };
				        })
				    }, { //与上层的点叠加
				    	name: item[0],
				        type: 'scatter',
				        coordinateSystem: 'geo',
				        zlevel: 3,
				        symbol: 'circle',
				        symbolSize: function (val) {
				        	//根据某项数据值设置符号大小
				            return val[2] / 15; 
				        },
				        itemStyle: {
				            normal: {
				            	color: '#f00'
				            }
				        },
				        data: item[1].map(function(dataItem) {
				            return {
				                name: dataItem[1].name,
				                value: flyGeo[dataItem[1].name].concat([dataItem[1].value])
				            };
				        })
				    });
		        });
	
				//报表配置项
				const flyMapOpt = {
					title: {						
						//show: false,
						text: '三原县地图飞线',
						x: 'center',
						textStyle: {
							color: '#fff',							
						},						
					},					
	                tooltip: {
	                    trigger: 'item',
	                    formatter: function(params) {
	                        if(params.value) {
	                            return params.name + ' : ' + params.value[2];
	                        }else {
	                            return params.name;
	                        }
	                    }
	                },
				    geo: {
				        map: '三原县',
				        roam: false, //开启鼠标缩放和漫游
				        zoom: 1, //地图缩放级别
						selectedMode: false, //选中模式:single | multiple
						left: 0,
						right: 0,
						top: 0,
						bottom: 0,
						layoutCenter: ['50%', '50%'], //设置后left/right/top/bottom等属性无效
						layoutSize: '100%', //保持地图宽高比
				        label: {
				            emphasis: {
				                show: false
				            }
				        },
				        itemStyle: {
				            normal: {
				                areaColor: '#101f32',
				                borderWidth: 1.1,
				                borderColor: '#43d0d6'
				            },
				            emphasis: {
				                areaColor: '#069'
				            }
				        }
				    },
				    series: flySeries
				};
				//渲染报表
				flyMap.setOption(flyMapOpt);
				/* 作者:赵勇琦
				时间:2023-02-22
				描述:地图展示 三原县各镇面积地图  地图散点 */					
				//初始化echarts实例
				const scatterMap = echarts.init(document.getElementById("worldMap"));
				//城市经纬度
				const scatterGeo = {
				   '城关镇': [108.95101 , 34.61900],
				   '渠岸镇': [108.99672 , 34.62704],
				   '陵前镇': [108.99914 , 34.76526],
				   '新兴镇': [108.90138 , 34.78284],				
				   '陂西镇': [109.11559 , 34.62462],
				   '鲁桥镇': [108.93353 , 34.69138],
				   '大程镇': [109.09528 , 34.67382],
				   '西阳镇': [109.01959 , 34.66483],
				   '独李镇': [109.08974 , 34.63880],
				   '嵯峨镇': [108.91569 , 34.72466],
				   '安乐镇': [109.02476 , 34.60192]
				};
				//城市数据
				const scatterVal = [
					{
						name: '城关镇',
						value: 117255
					},
					{
						name: '渠岸镇',
						value: 23460
					},				
					{
						name: '陵前镇',
						value: 43503
					},
					{
						name: '新兴镇',
						value: 27761
					},				
					{
						name: '陂西镇',
						value: 27024,					 
						
					},
					{
						name: '鲁桥镇',
						value: 24133
					},
					{
						name: '大程镇',
						value: 36441
					},
					{
						name: '西阳镇',
						value: 22352
					},
					{
						name: '独李镇',
						value: 22088
					},
					{
						name: '嵯峨镇',
						value: 20663
					},
					{
						name: '安乐镇',
						value: 15349
					}
				];
				//数据转换,转换后的格式:[{name: 'cityName', value: [lng, lat, val]}, {...}]
				const convertScatterData = function(data) {
				    let res = [];
				    for(let i=0;i<data.length;i++) {
				        let geoCoord = scatterGeo[data[i].name];
				        if(geoCoord) {
				            res.push({
				                name: data[i].name,
				                value: geoCoord.concat(data[i].value)
				            });
				        }
				    }
				    return res;
				};				
				const sactterMapOpt = {
					title: {
						text: '三原县面积地图',
						x: 'center',
						textStyle: {
							color: '#fff'
						}
					},					
					legend: {
						data: ['面积'], //与series的name属性对应
				        orient: 'vertical',
				        y: 'bottom',
				        x: 'right',
				        textStyle: {
				            color: '#fff'
				        }
				    },
					tooltip: {
				        trigger: 'item',
				        formatter: function(params) {
				            return params.name + ' : ' + params.value[2];
				        }
				    },
				    visualMap: {
				        min:20663,
				        max:117255,
				        calculable: true,
				        inRange: {
				            color: ['#50a3ba', '#eac736', '#d94e5d']
				        },
				        textStyle: {
				            color: '#fff'
				        }
				    },
					geo: {
				        map: '三原县',
				        roam: false, //开启鼠标缩放和漫游
				        zoom: 1, //地图缩放级别
						selectedMode: false, //选中模式:single | multiple
						left: 0,
						right: 0,
						top: 0,
						bottom: 0,
						layoutCenter: ['50%', '50%'], //设置后left/right/top/bottom等属性无效
						layoutSize: '100%',
				        label: {
				            emphasis: {
				                show: true
				            }
				        },
				        itemStyle: {
				            normal: {
				                areaColor: '#101f32',
				                borderWidth: 1.1,
				                borderColor: '#fff'
				            },
				            emphasis: {
				                areaColor: '#069'
				            }
				        }
				    },
				    series: [{
			            name: '面积',
			            type: 'scatter',
			            coordinateSystem: 'geo',
			            symbolSize: 12,
			            label: {
			                normal: {
			                    show: false
			                },
			                emphasis: {
			                    show: false
			                }
			            },
			            itemStyle: {
			                emphasis: {
			                    borderColor: '#fff',
			                    borderWidth: 1
			                }
			            },
			            data: convertScatterData(scatterVal)
			        }]
				};
				//渲染报表
				scatterMap.setOption(sactterMapOpt);
				
				
				
				/* 作者:赵勇琦
				时间:2023-02-22
				描述:地图展示 三原县各镇地图 */				
				//初始化echarts实例
				$(function() {
				//	/* 地图 需要哪个省市的地图直接引用js 将下面的name以及mapType修改为对应省市名称*/
					var maps = echarts.init(document.getElementById('scatterMap'));
					option = {
						title: {
							//show: false,
							text: '三原县地图',
							x: 'center',
							textStyle: {
								color: '#fff',							
							}
						},
						tooltip: {
							trigger: 'item',
							formatter: '{b}'
						},
						series: [{
							name: '三原县',
							type: 'map',
							mapType: '三原县',
							roam: false,
							top: '8%',
							zoom: 1.2,
							x: '9%',
							tooltip: {
									formatter: function(params) {
										var info = '<p style="font-size:18px">' + params.name + '</p><p style="font-size:14px">土地面积</p>'+params.value+'</p><p style="font-size:14px">km²</p>';;
										return info;
									},
									backgroundColor: "#ff7f50", //提示标签背景颜色
									textStyle: {
										color: "#fff"
									} //提示标签字体颜色
								},
							selectedMode: 'single', //multiple多选
							itemStyle: {
								normal: {
									label: {
										show: true,
										textStyle: {
											color: "#231816"
										}
									},
									areaStyle: {
										color: '#B1D0EC'
									},
									color: '#B1D0EC',
									borderColor: '#dadfde' //区块的边框颜色
								},
								emphasis: { //鼠标hover样式
									label: {
										show: true,
										textStyle: {
											color: '#fa4f04'
										}
									},
									areaStyle: {
										color: 'red'
									}
								}
							},
							data: [{
									name: '陵前镇',					
				                            value: 76.6,
				                            label: {
				                                normal: {
				                                    show: true,
				                                }
				                            },  
									itemStyle: {
										normal: {
											areaColor: '#f07c82',
											borderColor: '#1ca9f2'
										}
									}
									
								},
								
								{
									name: '新兴镇',
									value: 77.91,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: '#00ffff',
											borderColor: '#F9504A'
										}
									}
								},
								
								{
									name: '嵯峨镇',
									value: 80.1,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: '#8CEA00',
											borderColor: '#8CEA00',
										}
									}
								},
								{
									name: '大程镇',
									value: 67.8,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: '#13d5ff',
											borderColor: '#45b5ef'
										}
									}
								},
								{
									name: '西阳镇',
									value: 36.42,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: '#FFFD51',
											borderColor: '#FFFD51',
										}
									}
								},
								{
									name: '鲁桥镇',
									value: 77.91,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: '#1c4587',
											borderColor: 'salmon',
										}
									}
								},
							
								{
									name: '城关镇',
									value: 76.6,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: '#f6b26b',
											borderColor: '#1ca9f2'
										}
									}
								},
								{
									name: '渠岸镇',
									value: 28.39,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: '#a2c4c9',
											borderColor: '#88ddf5',
										}
									}
								},
								
								{
									name: '独李镇',
									value: 25.659,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: 'red',
											borderColor: 'red'
										}
									}
								},
								{
									name: '安乐镇',
									value: 66,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: '#B766AD',
											borderColor: '#B766AD',
										}
									}
								},
								{
									name: '陂西镇',
									value: 57.69,
									label: {
									    normal: {
									        show: true,	
									    }
									},  
									itemStyle: {
										normal: {
											areaColor: 'fuchsia',
											borderColor: 'fuchsia',
										}
									}
								},
								
							]
						}]
					};
					maps.setOption(option);
				
				});
				
					/* 作者:赵勇琦
					时间:2023-02-22
					描述:地图展示 陵前镇地图 */
				
				$(function() {
				//	/* 地图 需要哪个省市的地图直接引用js 将下面的name以及mapType修改为对应省市名称*/
					var maps = echarts.init(document.getElementById('provinceMap'));
					option = {
						title: {
							//show: false,
							text: '陵前镇地图',
							x: 'center',
							textStyle: {
								color: '#fff',							
							}
						},
						tooltip: {
							trigger: 'item',
							formatter: '{b}'
						},
						series: [{
							name: '陵前镇',
							type: 'map',
							mapType: '陵前镇',
							roam: false,
							top: '8%',
							zoom: 1.2,
							x: '25%',
							tooltip: {
									formatter: function(params) {
										var info = '<p style="font-size:18px">' + params.name + '</p><p style="font-size:14px">土地面积</p>'+params.value+'</p><p style="font-size:14px">km²</p>';;
										return info;
									},
									backgroundColor: "#ff7f50", //提示标签背景颜色
									textStyle: {
										color: "#fff"
									} //提示标签字体颜色
								},
							selectedMode: 'single', //multiple多选
							itemStyle: {
								normal: {
									label: {
										show: true,
										textStyle: {
											color: "#231816"
										}
									},
									areaStyle: {
										color: '#B1D0EC'
									},
									color: '#B1D0EC',
									borderColor: '#dadfde' //区块的边框颜色
								},
								emphasis: { //鼠标hover样式
									label: {
										show: true,
										textStyle: {
											color: '#fa4f04'
										}
									},
									areaStyle: {
										color: 'red'
									}
								}
							},
							data: [{
									name: '陵前镇',					
				                            value: 76.6,
				                            label: {
				                                normal: {
				                                    show: true,
				                                }
				                            },  
									itemStyle: {
										normal: {
											areaColor: '#f07c82',
											borderColor: '#1ca9f2'
										}
									}
									
								}	
							]
						}]
					};
					maps.setOption(option);
				
				});
				
				/* 作者:赵勇琦
				时间:2023-02-22
				描述:地图展示 三原县各镇人口地图 */
				//地图值
					var data = [
						{
							name: '城关镇',
							value: 76.6
						},
						{
							name: '渠岸镇',
							value: 28.39
						},				
						{
							name: '陵前镇',
							value: 75
						},
						{
							name: '新兴镇',
							value: 77.91
						},				
						{
							name: '陂西镇',
							value: 57.69,					 
							
						},
						{
							name: '鲁桥镇',
							value: 30.19
						},
						{
							name: '大程镇',
							value: 67.8
						},
						{
							name: '西阳镇',
							value: 36.42
						},
						{
							name: '独李镇',
							value: 25.659
						},
						{
							name: '嵯峨镇',
							value: 80.1
						},
						{
							name: '安乐镇',
							value: 66
						}
					];
					//地图经纬度
					var geoCoordMap = {
						'城关镇': [108.95101 , 34.61900],
						'渠岸镇': [108.99672 , 34.62704],
						'陵前镇': [108.99914 , 34.76526],
						'新兴镇': [108.90138 , 34.78284],				
						'陂西镇': [109.11559 , 34.62462],
						'鲁桥镇': [108.93353 , 34.69138],
						'大程镇': [109.09528 , 34.67382],
						'西阳镇': [109.01959 , 34.66483],
						'独李镇': [109.08974 , 34.63880],
						'嵯峨镇': [108.91569 , 34.72466],
						'安乐镇': [109.02476 , 34.60192]
					};
				
					var convertData = function(data) {
						var res = [];
						for (var i = 0; i < data.length; i++) {
							var geoCoord = geoCoordMap[data[i].name];
							if (geoCoord) {
								res.push({
									name: data[i].name,
									value: geoCoord.concat(data[i].value)
								});
							}
							
						}
						return res;
					};
					option = {				
						title: {
							text: '三原县各镇面积可视化数据',
							subtext: 'km²',
							//超链接
							//sublink: '',
							left: 'center',
							textStyle: {
								color: '#fff'
							}
						},
						tooltip: {
							trigger: 'item'
						},
						legend: {
							orient: 'vertical',
							y: 'bottom',
							x: 'right',
							data: ['人口'],
							textStyle: {
								color: '#fff'
							}
						},
						geo: {
							map: '三原县',
							label: {
								emphasis: {
									show: true
								}
							},
							roam: true,
							itemStyle: {
								normal: {
									areaColor: '#323c48',
									borderColor: '#111'
								},
								emphasis: {
									areaColor: '#2a333d'
								}
							}
						},
						series: [{
								name: '人口',
								type: 'scatter',
								coordinateSystem: 'geo',
								data: convertData(data),
								symbolSize: function(val) {
									return val[2] / 10;
								},
								label: {
									normal: {
										formatter: '{b}',
										position: 'right',
										show: true
									},
									emphasis: {
										show: true
									}
								},
								itemStyle: {
									normal: {
										color: '#ddb926'
									}
								}
							},
							{
								name: 'Top 6',
								type: 'effectScatter',
								coordinateSystem: 'geo',
								data: convertData(data.sort(function(a, b) {
									return b.value - a.value;
								}).slice(0, 6)),//改变显示前几名
								symbolSize: function(val) {							
									return val[2] / 10;
								},
								showEffectOn: 'render',
								rippleEffect: {
									brushType: 'stroke'
								},
								hoverAnimation: true,
								label: {
									normal: {
										formatter: '{b}',
										position: 'right',
										show: true
									}
								},
								itemStyle: {
									normal: {
										color: '#f4e925',
										shadowBlur: 10,
										shadowColor: '#333'
									}
								},
								zlevel: 1
							}
						]
					};
					var myChart = echarts.init(document.getElementById('cityMap'));
					myChart.setOption(option)
				
				
			
				/********** 浏览器窗口改变时,重置报表大小 ****************/
				window.onresize = function() {
					flyMap.resize();
					scatterMap.resize();
					worldMap.resize();
					provinceMap.resize();
					cityMap.resize();
					countyMap.resize();
				}
			});
		</script>
	</body>
</html>

2.运行结果

运行结果
源码下载三原县地图数据可视化

总结

三原学子开发学习过程中,在做地图数据可视化过程中,希望可以用到,三原县地图数据已经精确到镇,首次填写了这方面的空白,相关资源文件免费下载,欢迎下载使用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值