echarts加载区域地图,并标注点

效果如下,加载了南海区域的地图,并标注几个气象站点;

1、下载区域地图的JSON:DataV.GeoAtlas地理小工具系列

新建nanhai.json,把下载的JSON数据放进来

说明:如果第二步不打勾,只显示省的名字,

如果打勾的话,会显示省下所有市的名字,看个人需求

如果要把多个省放在一起展示,则把多个JSON文件里的features数据合并即可

2、使用Echarts展示地图

html 复制代码
<!--地图-->
<div ref="chartRef" class="chart"/>

<script setup>
import {ref, onMounted} from 'vue'
import * as echarts from 'echarts'
import nanhaiJson from '@/assets/map/nanhai.json'

//地图json数据: https://datav.aliyun.com/portal/school/atlas/area_selector
const chartRef = ref()
const formRef = ref()
let myChart = null;
const stationData = ref([])

//加载数据
onMounted(() => {
	//加载南海地图
	echarts.registerMap('nanhai', nanhaiJson)
	loadData()
})


const loadData = () => {
	xxApi.xxPage().then((data) => {
		if (data && data.total > 0) {
			stationData.value = []
//拼接地图上需要标注的点			
data.records.forEach((item) => {
				stationData.value.push(
					{
						name: item.name,
						value: [item.longitude, item.latitude]
					}
				)
			})
		}
		loadChart()
	})

}

//加载图表
const loadChart = () => {
	// 如果实例已经存在,则先销毁再重新创建
	if (myChart != null && myChart.dispose) {
		myChart.dispose();
	}
	myChart = echarts.init(chartRef.value)
	myChart.showLoading({text: 'loading'})

	let option = {
		geo: {
			map: 'nanhai',
			zoom: 1.2,//缩放比例
			roam: true, // 是否允许缩放和平移
			itemStyle: {
				areaColor: 'lightskyblue',
				borderColor: '#404a59'
			},
			label: {
				show: true
			},
		},
		//气象站点列表
		series: [{
			type: 'scatter',
			coordinateSystem: 'geo',
			data: stationData.value,
			symbolSize: 10,
			label: {
				show: true,
				formatter: function (params) {
					return params.name; // 显示点的name
				},
				position: 'top', // 或其他位置
				color: '#FF4500' // 设置标签字体颜色为红色
			},
			itemStyle: {
				normal: {
					color: '#FFA500' // 设置为橘黄色
				}
			},
		}]
	}

	myChart.hideLoading()
	myChart.setOption(option)
	// 自适应屏幕
	window.addEventListener('resize', function () {
		myChart.resize()
	})
}

</script>

<style scoped>
.chart {
	height: 550px;
}

.detail-chart {
	height: 100%;
	overflow: auto;
}

</style>

OK,大功搞定!!!

相关推荐
kyle~11 分钟前
Swagger ---基于 描述文件 生成 交互式API文档 的工具
前端·后端·规格说明书·说明文档
meilindehuzi_a7 小时前
从零理解并实现 RAG:用 LangChain.js 构建语义检索问答系统
开发语言·javascript·langchain
世界哪有真情9 小时前
拿人类意识卡 AI?等于用 bug 验收正式产品
前端·人工智能·后端
鱼樱前端9 小时前
别再自己拼凑了!这款 Vue 3.5+ 严肃产品级组件库,把 AI 对话、工作流和复杂数据全包了!
javascript·vue.js·github
Listen·Rain10 小时前
Vue3:setup详解
前端·javascript·vue.js
Patrick_Wilson10 小时前
修好 bug 只是开始:一次由监控需求反向重构日志结构的复盘
前端·监控·数据可视化
kyriewen11 小时前
面试官让我优化一个卡死的表格,我打开 Claude 五秒重写,他放下咖啡问我要不要来当组长
前端·javascript·面试
小粉粉hhh11 小时前
React(二)——dom、组件间通信、useEffect
前端·javascript·react.js
Csvn11 小时前
🤖 AI 生成前端代码的 5 个典型翻车现场及修复指南
前端
IT_陈寒12 小时前
SpringBoot自动装配坑了我一天,原来问题出在这
前端·人工智能·后端