获取中国地区的矢量数据(数据在之前导入的static文件夹中)
注册地图数据
配置geo
获取数据:/api/map
处理数据:散点数据、图例数据
图表的设置:配置series(type为effectScatter、coordinateSystem为geo)
主题的使用:init方法的第二个参数
标题的显示:title
地图位置和颜色:geo、geo.itemStyle
图例的位置和方向:legend
涟漪效果:rippleEffect:scale、rippleEffect.brushType
screenAdapter(标题文字大小、图例大小)
点击事件的监听:this.chartInstance.on('click', ()=>{})
获取所点击省份的矢量地图数据:需要有省份拼音的对照数据、得到点击省份地图数据的路径
显示省份:注册地图数据、配置geo
回到中国地图:配置geo、map:'china'
单击地图省份,能得到该省份的地图,双击屏幕,能够回到中国地图
当点击同一个省份多次,为了防止多次请求,每次请求之后,就将该省份的数据存到这个mapData对象中,下次请求的时候,先判断一下mapData中有没有自己想要的数据。
components/Map.vue
views/MapPage.vue
router/index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import SellerPage from '../views/SellerPage'
import TrendPage from '../views/TrendPage'
import MapPage from '../views/MapPage'
Vue.use(VueRouter)
const routes = [
{
path: '/sellerpage',
component: SellerPage
},
{
path: '/trendpage',
component: TrendPage
},
{
path: '/mappage',
component: MapPage
}
]
const router = new VueRouter({
routes
})
export default router
util/map_utils.js
封装了一个方法:将省份的中文名转换成拼音
const name2pinyin = {
安徽: 'anhui',
陕西: 'shanxi1',
澳门: 'aomen',
北京: 'beijing',
重庆: 'chongqing',
福建: 'fujian',
甘肃: 'gansu',
广东: 'guangdong',
广西: 'guangxi',
贵州: 'guizhou',
海南: 'hainan',
河北: 'hebei',
黑龙江: 'heilongjiang',
河南: 'henan',
湖北: 'hubei',
湖南: 'hunan',
江苏: 'jiangsu',
江西: 'jiangxi',
吉林: 'jilin',
辽宁: 'liaoning',
内蒙古: 'neimenggu',
宁夏: 'ningxia',
青海: 'qinghai',
山东: 'shandong',
上海: 'shanghai',
山西: 'shanxi',
四川: 'sichuan',
台湾: 'taiwan',
天津: 'tianjin',
香港: 'xianggang',
新疆: 'xinjiang',
西藏: 'xizang',
云南: 'yunnan',
浙江: 'zhejiang'
}
export function getProvinceMapInfo (arg) {
const path = `/static/map/province/${name2pinyin[arg]}.json`
return {
key: name2pinyin[arg],
path: path
}
}