单独图表组件的开发 --- 商家分布模块(地图+散点图 )

目录 

效果预览

通用代码结构和流程 

显示地图

获取中国地区的矢量数据(数据在之前导入的static文件夹中)
注册地图数据
配置geo

显示散点图

获取数据:/api/map
处理数据:散点数据、图例数据
图表的设置:配置series(type为effectScatter、coordinateSystem为geo) 

UI调整

主题的使用: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
  }
}

你可能感兴趣的