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>
相关推荐
paopaokaka_luck17 小时前
基于springboot3+vue3的文山民族文化资源展示与推广平台(协同过滤算法、Echarts 图形化分析)
java·前端·spring boot·学习·echarts
张人玉21 小时前
基于 Vue 3 + ECharts + Three.js + Express + SQLite——智慧城市数字孪生可视化平台
javascript·vue.js·信息可视化·sqlite·echarts
Smile_ping1 天前
ECharts 图例文本对齐,告别长短不一!
echarts·legend·图例文本对齐
Sayai3 天前
【无标题】ECharts 实现日志量异常检测:基线 ±Kσ 基带 + 灵敏度切换(Vue2 实战)
前端·javascript·echarts
Smile_ping3 天前
自定义tooltip,解决图表数据重叠,无法准确点击问题!
echarts·自定义tooltip
盛夏绽放3 天前
Proxy与Reflect详解(二):进阶篇——手写Vue3响应式系统
ui·vue3·proxy
RuoyiOffice3 天前
抓包还能看到密码?Vue3 + Spring Boot 3 接口 AES/RSA 加解密(@ApiEncrypt)全链路实战
spring boot·vue3·aes·rsa·接口安全·spring boot 3·apiencrypt
一颗烂土豆4 天前
ECharts 太平面?试试这款 Vue 3D 图表库
前端·vue.js·echarts
RuoyiOffice5 天前
SpringBoot3+Vue3 接口访问日志实战:@ApiAccessLog 慢接口、参数脱敏与 OperateLog 如何分工
spring boot·vue3·traceid·spring boot 3·访问日志·apiaccesslog·操作日志
tryCbest5 天前
Vue3项目在Nginx中配置代理后端IP
nginx·vue3