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>
相关推荐
z止于至善2 小时前
Vue ECharts:Vue 生态下的 ECharts 可视化最佳实践
前端·vue.js·echarts·vue echarts
沙振宇2 小时前
【Web】使用Vue3+PlayCanvas开发3D游戏(四)3D障碍物躲避游戏2-模型加载
游戏·3d·vue3·vite·playcanvas
xChive17 小时前
ECharts-大屏开发复习记录与踩坑总结
前端·javascript·echarts
SuperEugene19 小时前
Vue3 中后台实战:VXE Table 从基础表格到复杂业务表格全攻略 | Vue生态精选篇
前端·vue.js·状态模式·vue3·vxetable
p5l2m9n4o6q1 天前
Vue3后台管理系统布局实战:从零搭建Element Plus左右布局(含Pinia状态管理)
vue3·pinia·element plus·viewui·后台管理系统
梵得儿SHI1 天前
Vue3 生态工具实战进阶:API 请求封装 + 样式解决方案全攻略(Axios/Sass/CSS Modules)
前端·css·vue3·sass·api请求·样式解决方案·组合式api管理
行者-全栈开发2 天前
43 篇系统实战:uni-app 从入门到架构师成长之路
前端·typescript·uni-app·vue3·最佳实践·企业级架构
沙振宇2 天前
【Web】使用Vue3+PlayCanvas开发3D游戏(二)3D 地图自由巡视闯关游戏
游戏·3d·vue3·playcanvas
小黑的铁粉2 天前
ecahrts图形多的页面,怎么解决数据量大的渲染问题?
前端·echarts
还是大剑师兰特2 天前
vue3+vite+JS,使用Echarts封装一个饼图,父子组件联动
javascript·vue.js·echarts