36-引入地图

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

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

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

然后,我们改一下 pie.jsonpie-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>
相关推荐
linlinlove215 小时前
前端uniapp、后端thinkphp股票系统开发功能展示、代码披露、HQChart
前端·uni-app·echarts·thinkphp·hqchart·配资·deepseek选股票
蜡台17 小时前
Vue Echart 的 **高阶组件化** 封装思路
前端·javascript·vue.js·echarts
跟着珅聪学java1 天前
ECharts subtext(副标题)边距开发教程
前端·javascript·echarts
暗冰ཏོ2 天前
《2026 Vue2 + Vue3 完整学习指南:基础语法、路由缓存、登录拦截、项目实战与面试题》
前端·vue.js·vue·vue3·vue2
曲幽2 天前
写页面时别再把 Element Plus 整个搬进来啦!Vue3按需加载的坑我帮你踩平了
vue3·web·vite·icon·element plus·vs code·import·unplugin
hdsoft_huge2 天前
全开源数字孪生系统搭建方案:全套技术文档
vue.js·开源·node.js·echarts·webstorm
文阿花4 天前
大屏实现方案之-Echarts
前端·javascript·echarts
小云小白4 天前
若依-vue3 把深色版本改成天蓝色-含登录页
vue3·若依·天蓝色
曲幽5 天前
FastApiAdmin 后端接口开发好了,前端管理界面怎么调用与显示?
python·vue3·api·fastapi·web·ant design·view·menu·frontend
憧憬成为java架构高手的小白5 天前
苍穹外卖--day11数据统计-图形报表(管理端)
java·spring boot·echarts