需求:画出全国地图,根据后台返回数据,在地图上标出对应的地点(map + 散点)

准备工作:
  • 安装依赖
npm install echarts -S
  • 在main.js中引入
import echarts from 'echarts'
Vue.prototype.$echarts = echarts;
  • 在需要画地图的页面引入地图的 js 或者 json 文件,官方已经不提供下载很久了,我自己在网上找了一份 json datas.json 点击下载 (经纬度多少有点误差,仅供参考)
    将该文件放在项目中(我放在了static目录下),引入
    import geoData from "../../../../../static/json/datas.json";
以下为代码:
<template>
<div><div :id="chartId" style="height:100%;width:100%;"></div>
</div>
</template><script>
import geoData from "../../../../../static/json/datas.json";
export default {data() {return {windowSize: [0, 0],chartId: `map-${this.$root.UUID()}`,       //用UUID生成图表id,防止id重复chart: { map: null, chartData: [], },}},watch: { windowSize() { this.chart.map.resize() }, },        //监听页面窗口变化mounted() {this.initChart();this.$nextTick(() => { this.drawChart(); });},methods: {initChart() {let _this = this_this.windowSize = [document.body.clientWidth, document.body.clientHeight];window.addEventListener('resize', () => { _this.windowSize = [document.body.clientWidth, document.body.clientHeight]; });_this.chart.map = _this.$echarts.init(document.getElementById(_this.chartId))},drawChart() {let _this = this;let mapName = 'china'let geoCoordMap = {};let tempData = [          //模拟数据{city:'北京',value:'55'},{city:'天津',value:'20'},{city:'西藏',value:'100'},{city:'辽宁',value:'58'},]_this.chart.map.showLoading();      //loading样式let mapFeatures = _this.$echarts.getMap(mapName).geoJson.features;  //获取全国地区的经纬度(只包含了一级城市、省份经纬度)_this.chart.map.hideLoading();            //隐藏loading样式mapFeatures.forEach(function (v) { //获取一级城市、省份经纬度let name = v.properties.name; // 地区名称geoCoordMap[name] = v.properties.cp; // 地区经纬度});let convertData = function (tempData) {               //通过该方法获取自己数据中各地区的经纬度let tempRes = [];for (let i = 0; i < tempData.length; i++) {let geoCoord = geoCoordMap[tempData[i].name] || [];if (geoCoord) {tempRes.push({name: tempData[i].name,value: geoCoord.concat(tempData[i].value) || [],});}}for (let i = 0; i < tempRes.length; i++) {let tempGeoCoord = geoData.rows.filter(t => { return t.name.includes(tempRes[i].name) })if (tempGeoCoord && tempRes[i].value.length == 1) {tempRes[i].value.unshift(tempGeoCoord[0].lat)tempRes[i].value.unshift(tempGeoCoord[0].lng)}}return tempRes;};_this.chart.map.setOption({                 //开始画图geo: {map: 'china',label: { show: false, },                 // 是否显示对应地名roam: true,itemStyle: {normal: {borderWidth: 1, // 地图边框宽度borderColor: '#fff', // 地图边框颜色areaColor: '#0FADFF' // 地图颜色},emphasis: { areaColor: '#0FADFF', borderWidth: 2 }        //高亮时的样式},emphasis: { areaColor: '#0FADFF', borderWidth: 2, label: { show: false } }},tooltip: {triggerOn: 'mousemove',trigger: 'item',extraCssText: 'background:transparent;border:none;',formatter: function (params) {let count = eval(convertData(tempData).map(a => { return a.value[2] }).join('+'))let content = `<div class='tooltip'>${params.name}&nbsp;${params.value[2]}户&nbsp;${(params.value[2]/count*100).toFixed(2)}%`;return (content += `</div>`);}},series: [{name: '散点',type: 'scatter',coordinateSystem: 'geo',color: "#5ADD8B",                 //点的颜色data: convertData(tempData),symbolSize: 10,               //点的大小symbol: "circle",               //点的样式cursor: "pointer",          //鼠标放上去的效果label: {normal: { show: false },      //默认展示 emphasis: { show: false }     //滑过展示},itemStyle: { color: '#5ADD8B', emphasis: { borderColor: '#fff', borderWidth: 1 } }},{type: 'map',map: 'china',geoIndex: 0,silent: true,hoverable: false,aspectScale: 0.75,tooltip: { show: false }},],});// 取消框架自带的高亮,只高亮散点// _this.chart.map.on('mouseover', (v) => {//   let enlarge = convertData(tempData).map(a => { return a.name })//   let point = enlarge.findIndex(t => { return t == v.name })//   if (point < 0) { _this.chart.map.dispatchAction({ type: 'downplay', dataIndex: v.dataIndex }); }// });// 鼠标滑动到散点外不显示tip_this.chart.map.on('mouseover', (v) => { let enlarge = convertData(tempData).map(a => { return a.name })let point = enlarge.findIndex(t => { return t == v.name })if (point < 0) { _this.chart.map.dispatchAction({ type: 'hideTip', dataIndex: v.dataIndex }); }});_this.$nextTick(() => { _this.chart.map.resize() })},},
}
</script><style lang="scss">.tooltip {color: rgba(50, 50, 50, 1);padding: 6px 9px 11px 9px;background: rgba(255, 255, 255, 1);box-shadow: 0px 2px 10px 2px rgba(0, 0, 0, 0.1);
}
</style>

vue + echarts 实现简单中国地图相关推荐

  1. 使用Echarts完成对中国地图的绘制

    目录 前言 1.什么是Echarts插件 2.如何在vue中使用Echarts 3.中国地图的具体样式 4.如何使用Echarts来完成中国地图的绘制 5.总结 前言 我们在使用代码绘画地图的时候通常 ...

  2. vue+echarts实现江苏省疫情地图

    vue+echarts实现江苏省疫情地图 文章目录 vue+echarts实现江苏省疫情地图 前言 一.使用步骤 1.引入库 2.代码数据 效果 前言 作为刚学习vue结合echarts写的案例,当前 ...

  3. Echarts中引入中国地图

    摘要:最近公司要求开发大屏大数据展示界面,其中有个需求是迁徙图,以下是自己的相关总结,如有些的不好的地方请大家多多指教,我会虚心学习并修改不足的地方. 思考:1.迁徙图实现的第一步是引入中国地图,那如 ...

  4. vue中使用eCharts插件显示中国地图

    一.前言 由于项目需求,需要一个中国地图,上面根据从服务器获取到的数据,显示各省份的数据.在eEcharts官网,发现没有地图相关的案列(搜索了一下,都下架了),只有社区有. 二.查找资料 eChar ...

  5. vue使用echarts来绘制中国地图下钻省市区县级地图

    文章目录 前言 一.echarts 二.使用步骤 1.vue安装.引入echarts 2.使用echarts 总结 前言 公司需要一个中国地图点击可进入省市区县级,但是在我使用echarts绘制中国地 ...

  6. vue中用echarts 绘制geo 中国地图

    前言 由于5.X版本的echarts没有了map包,因此我先安装了5.1.1版本,再安装了4.9版本,并将4.9版本中的map包复制到了5.1.1版本里. 绘制效果如下: 1.省份根据数据值,展示不同 ...

  7. 【echarts实现】中国地图 世界地图

    打开一个用 vue 创建的新项目 安装 npm install --save echarts@4.x echars实现中国和世界地图需要引入地图资源 需引入地图的话下载的echarts版本就要低于5. ...

  8. 使用 Echarts 插件完成中国地图

    目录 前言: 什么是 Echarts 插件 中国地图成品展示 步骤: 完成中国地图代码 总结: 前言: 大家都知道,一般情况下,想要使用前端设置一个 中国地图 需要使用 canvas 画布进行编写,不 ...

  9. 关于echarts自定义合并中国地图分区展示的问题

    其实为了自己能够记住所遇到的问题,然后也是为了以后方便查找,开始决定尝试第一次写自己的博客.当然很多东西也是自己查找借鉴他人才最终解决的问题,所以在此也非常感谢他人的分享.本人前端小白一个,半路转行从 ...

  10. 使用vue+echarts快速进行全国地图与各省市地图联动(下钻地图), 引入省份js文件

    项目源码附js/json地图数据(下载项目源码后请使用Npm install 来安装相关依赖) 效果 使用前请使用npm(cnpm)安装echarts,详情见官网. 本文作为笔记demo只引入5个省( ...

最新文章

  1. 阻碍职场发达的十种做法
  2. 高度为k的二叉树个数(递推分析)
  3. 面试的问题 及回答
  4. 中兴f650 2.0.3 固件降级_手机资讯:如何升级iOS12.1.4正式版iOS12.1.4正式版升降级教程...
  5. getuid、geteuid、getgid和getegid函数
  6. freemarker数值格式化
  7. 用美图秀秀给人像P上西装,并改成纯色背景
  8. ifv播放器android 版,ifv格式播放器
  9. texmacs 源码安装
  10. 第十五届全国大学生智能汽车竞赛安徽赛区获奖名单
  11. 技术干货 | Linkis实践:新引擎实现流程解析
  12. iphone粘贴关联_如何将电话号码粘贴到iPhone的电话应用程序中
  13. zoc for mac注册码
  14. Java Web项目源代码|CRM客户关系管理系统项目实战(Struts2+Spring+Hibernate)解析+源代码+教程
  15. ubuntu18.04 安装Adobe Flash Player
  16. fabric1.4.3单机环境搭建教程(四)
  17. VS2005下error PRJ0003 : Error spawning 'cmd.exe'的解决方法
  18. go postgresql 增删改查
  19. asp毕业设计——基于asp+access的网页设计辅导系统设计与实现(毕业论文+程序源码)——网页设计辅导系统
  20. 计算机网络能传递的信息是什么,计算机网络的功能是什么?

热门文章

  1. 那些你不可错过的Java博客
  2. C语言底层原理(二):动态库、静态库
  3. Power Spectral Density
  4. BZOJ 3251 树上三角形
  5. js与jQuery操作select大全
  6. 重载,重写(覆盖)和隐藏的区别
  7. setupdll在CAB安装过程中的一些处理方法
  8. 设计模式网上资料整合理解——行为型模式(一)
  9. optuna 自动化调参利器
  10. Android修改读写速度,Android 通过adb测试机器读写速度(rk)