36-引入地图

下面我们在首页引入地图功能

首先我们要准备一下地图的 geojson 数据,去这里 https://datav.aliyun.com/portal/school/atlas/area_selector 下载即可

下载下来之后,放置到 mock/data/china.geojson.json 里面

然后,我们改一下 pie.json 为 pie-map.json,里面先添加一下地图相关的字段 saleMap

对应的 mock 接口也调整一下

相应的类型

ts 复制代码
interface IndexDataItf {
    salePie: {}[]
    saleMap: {}[]
}

最后页面实现逻辑

html 复制代码
<template>
    <div class=''>
        <MyPie :data="salePie"></MyPie>
        <MyMap :data="saleMap"></MyMap>
    </div>
</template>

<script lang='ts' setup>
import MyPie from './components/MyPie.vue'
import MyMap from './components/MyMap.vue'
import { reactive, toRefs } from 'vue'
import { getAdminStat} from '@/api/index'
import { ElMessage } from 'element-plus'

const state = reactive<{
    salePie: {}[]
    saleMap: {}[]
}>({
    salePie: [],
    saleMap: []
})

let { salePie, saleMap } = toRefs(state)

getAdminStat().then((res) => {
    if(res.code === 200) {
        salePie.value = res.data.salePie
        saleMap.value = res.data.saleMap
    } else {
        ElMessage.error('获取首页数据失败')
    }
})

</script>

<style lang='less' scoped>

</style>

新建地图 MyMap.vue 组件

html 复制代码
<template>
    <div id="map" style="width: 100%;height:700px;"></div>
</template>

<script lang='ts' setup>
import { watch } from 'vue'
import * as echarts from 'echarts'
import chinaGeojson from '@/mock/data/china.geojson.json'
// ECharts 提供的 API,用于注册地图数据
// 注册后,在 ECharts 的 option 中设置 map: 'china' 即可显示中国地图。
echarts.registerMap('china', chinaGeojson as any)

const props = defineProps<{
    data: {}[]
}>()
let myMap: echarts.ECharts;

watch(() => props.data, () => {
    // 基于准备好的dom,初始化echarts实例
    if(!myMap) {
        myMap = echarts.init(document.getElementById('map'));
        const option = {
            series: {
                type: 'map',
                map: 'china'
            }
        }
        myMap.setOption(option);
    }
})
</script>

<style lang='less' scoped>

</style>
相关推荐
樱花落木兰2 天前
SpringBoot + ECharts 后台数据统计报表模块实战
java·javascript·spring boot·ai·log4j·github·echarts
小小尚@2 天前
WebGIS 开发利器|MapLand 在线行政区划 GeoJSON 边界预览下载平台
echarts·地图·geojson·webgis
千里码aicood2 天前
基于ECharts的电商平台用户行为数据分析
信息可视化·数据分析·echarts
Json____2 天前
家居装修 AI 智能咨询助手:让装修咨询从“大海捞针“变成“一问即答“
java·后端·vue3·it学习·wwwoop.com
paopaokaka_luck3 天前
个人综合管理小程序(echarts数据看板、健康数据记录与趋势查看、目标拆解和进度管理、日程待办与番茄钟、习惯打卡、收支统计、个人生活记录、跨模块智能提醒)
前端·javascript·spring·小程序·数据分析·echarts·生活
liangshanbo12153 天前
面试题:什么是 Reflect?它解决了什么问题?
vue3·reflect
RuoyiOffice3 天前
SpringBoot3+Vue3 低代码业务表单:从拖拽设计、独立建表到审批与数据查询
spring boot·vue3·数据建模·flowable·版本管理·低代码表单·ruoyi office
RuoyiOffice3 天前
SpringBoot3 企业薪酬核算:考勤、绩效与薪资规则如何算出一张可解释的工资单
spring boot·vue3·规则引擎·hrm·ruoyi office·薪酬核算·薪资试算
paopaokaka_luck10 天前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
RuoyiOffice10 天前
2026最推荐基于SpringBoot+Vue3的项目管理经营一体化:从商机、合同、任务与工时走到回款和利润
spring boot·项目管理·vue3·crm·合同管理·ruoyi office·项目经营