基于echarts显示具体个某个省,某个市,或者某个县的方法

博客介绍了使用ECharts生成地图,可生成河北省廊坊市、云南省昆明市新平县等特定省市县的地图。关键在于使用对应的JSON数据,作者已准备好相关数据,可从https://github.com/wenccro/chinaMapJsonData下载,还给出了河北省廊坊市的案例。

第一个是一个河北省  廊坊市  里面的地图。分别对应  云南省    昆明市     新平县   ,这个关键在在于json数据。我已经给大家都弄好了,只需要去 下载你需要的json数据就可以了。地址是https://github.com/wenccro/chinaMapJsonData

那是 压缩的  那个省份的所有数据,包括时和县都在里面了 。可以看我的  demo来做

下面是一个  河北省廊坊市案例  大家一看就知道了

<!DOCTYPE html>
<head>
	<meta charset="utf-8">
	<title>ECharts</title>
	<script src="js/jquery-1.11.3.js"></script>
	<script src="echarts.min.js"></script>
</head>

<body>
	 <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
    <div id="main" style="width: 600px;height:400px;"></div>
	<script>
		var markdata=[];//这是为了给地图上添加气泡图标,拿取备用数据
		//取得json的样式,读取json文件
		$.getJSON("langfeng.json", "", function(data) {
			markdata=convertData(data.features)
			//生成地图
			createMap(data);
		})
		//生成地图
		function createMap(data){
			echarts.registerMap('demo',data);
			var chart = echarts.init(document.getElementById('main'));
			chart.setOption({
				dataRange: {
					min: 0,//颜色区间的最小值
					max: 50,//颜色区间的最大值,和data中的最大值一致
					x: 'left',
					y: 'bottom',
					text:['高','低'], // 文本,默认为数值文本
					calculable : true,
					inRange: {
						//颜色区间
						color: ['lightskyblue','yellow', 'orangered','red']
					}
				 },
				 tooltip : {
					show:true,
					formatter: '在建工程<br /> {b}: {c0}'
				 },
				series: [{
					type: 'map',
					map: 'demo',
					itemStyle:{
						normal:{label:{show:true}},
						emphasis:{label:{show:true}}
					},
					data:markdata,
					markPoint:{
						symbolSize: 45,
						 itemStyle: {
							normal: {
								borderColor: '#33CBFF',
								color:'#33CBFF',
								borderWidth: 1,            // 标注边线线宽,单位px,默认为1
								label: {
									show: true
								}
							}
						},
						
						data:markdata
					   
					}
				}]
			});
		}
		//处理整合   气泡图标数据
		function convertData(arrs){
			var markdata=[];
			var valuess=[50,20,0,30,15,25,48,10,5,38];
			for(var i=0; i<arrs.length; i++){
				markdata.push({})
				if(arrs[i].properties.name=='安次区'){
					markdata[i].coord=new Array(parseFloat(arrs[i].properties.center[0])+0.1,parseFloat(arrs[i].properties.center[1])-0.18);
					console.log(markdata[i])
				}else{
					markdata[i].coord=arrs[i].properties.center;
				}
				markdata[i].name=arrs[i].properties.name;
				
				markdata[i].value=valuess[i]
			}
			return markdata
		}
	</script>
</body>

json数据包 可以去我的githup上下载,地址是https://github.com/wenccro/chinaMapJsonData

在 Vue 框架中集成 ECharts,实现可拖拽、缩放和点击交互的级下辖区地图可视化,需要结合 ECharts 的地理坐标系(geo)、事件绑定(如点击、拖拽、缩放)以及 Vue 的组件化开发模式。 ### 1. 地图数据准备 ECharts 本身支持 GeoJSON 格式的地图数据,可以通过引入中国级或级行政区划的 GeoJSON 文件来绘制地图。通常可以从官方或开源社区获取对应城的下辖区 GeoJSON 数据,例如: ```javascript // 示例:在 Vue 组件中引入地图数据 import { geoJson } from '@/assets/mapData/china-city-county.json' ``` 然后注册地图数据: ```javascript echarts.registerMap('city-county', geoJson) ``` ### 2. 初始化 ECharts 实例 在 Vue 的 `mounted` 生命周期钩子中初始化 ECharts 实例,并设置 `geo` 配置项以启用地图交互功能: ```javascript mounted() { const chart = echarts.init(document.getElementById('map')) chart.setOption({ geo: { map: 'city-county', type: 'map', roam: true, // 启用拖拽和缩放 zoom: 1.2, // 初始缩放比例 center: [116.46, 39.92], // 初始中心点 itemStyle: { areaColor: '#f2f2f2', borderColor: '#444' }, emphasis: { itemStyle: { areaColor: '#2a333d' } } }, series: [{ type: 'map', data: [] }] }) } ``` ### 3. 事件交互绑定 ECharts 提供了丰富的事件监听器,可用于实现点击交互。例如,点击某个区时可以弹出信息窗口或跳转页面: ```javascript chart.on('click', (params) => { if (params.componentType === 'series') { const { name, value } = params alert(`你点击了 ${name},数值为 ${value}`) } }) ``` ### 4. 响应式布局 为了适配不同屏幕尺寸,可以在 Vue 组件中使用 `resize` 方法监听窗口变化并调整图表大小: ```javascript window.addEventListener('resize', () => { chart.resize() }) ``` ### 5. 完整示例代码 以下是一个完整的 Vue 组件模板示例: ```vue <template> <div id="map" style="width: 100%; height: 600px;"></div> </template> <script> import * as echarts from 'echarts' import { geoJson } from '@/assets/mapData/china-city-county.json' export default { mounted() { const chart = echarts.init(document.getElementById('map')) echarts.registerMap('city-county', geoJson) chart.setOption({ geo: { map: 'city-county', type: 'map', roam: true, zoom: 1.2, center: [116.46, 39.92], itemStyle: { areaColor: '#f2f2f2', borderColor: '#444' }, emphasis: { itemStyle: { areaColor: '#2a333d' } } }, series: [{ type: 'map', data: [] }] }) chart.on('click', (params) => { if (params.componentType === 'series') { const { name, value } = params alert(`你点击了 ${name},数值为 ${value}`) } }) window.addEventListener('resize', () => { chart.resize() }) } } </script> ``` ### 6. 优化建议 - **地图性能优化**:对于包含大量区的大型地图,建议使用 `echarts-gl` 或者按需加载区域数据,以避免性能瓶颈。 - **数据绑定**:可通过 Vue 的响应式数据机制动态更新地图上的数据,例如通过 API 获取实时数据并更新 `series.data`。 - **样式定制**:可通过 `visualMap` 或 `geoIndex` 实现基于数值的颜色渐变效果,增强可视化表现[^1]。
评论 36
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值