ECharts地图绘制和钻取简易接口详解


Posted in Javascript onJuly 12, 2019

1.地图绘制过程原理

给定范围边界经纬度数据,再给它个名字就构成了绘制地图的基础。也就是说,你可以绘制任意形状的地图版块。

2.地图数据生成

中国以及省市县等地图的基础数据可以从这里生成与下载。

http://datav.aliyun.com/tools/atlas

有了地图范围数据,在 echarts 中通过 registerMap 给这块注册个名字,即可为后续绘制使用,以下代码以最简形式绘制一幅中国地图。

$.getJSON('https://geo.datav.aliyun.com/areas/bound/100000_full.json', function (data) {
 var name = "中国地图";
 // 注册一个地图名称
 echarts.registerMap(name, data); 
 
 var myChart = echarts.init(document.getElementById('map')); 
 var mapOption = { 
  series: [ 
  { 
   type: 'map', // 指明地图类型
   map: name,  // 指明取的名称
   label: {show:true},
   roam: true  // 可缩放
  } ]
 }; 
 myChart.setOption(mapOption, true); 
});

ECharts地图绘制和钻取简易接口详解

3.封装形成简易接口

3.1接口定义

从使用方式与期望结果出发来定义接口。期望给定区域名称,指定绘制位置(DOM元素)即可完成工作。同时希望能控制是否支持钻取,这就形成了最基础的接口定义。

/** 根据名称加载地图
 * @param elementId : DOM 元素ID
 * @param name  : 地图名称(仅已定义的地区名称)
 * @param drill  : 是否支持钻取
 */
ChinaMap.loadMap = function(elementId, name, drill) {...}

3.2接口实现

(1)支持多地图图表绘制,定义 ChartList 来记录每个DOM元素对应的图表对象。

(2)支持钻取,建立省市名称的层级关系,市编码前两位为省编码。

ChinaMap.provinceCodes={'13':'河北','14':'山西',...}
ChinaMap.cityCodes={"石家庄市":"130100","唐山市":"130200",...}

(3)动态加载相应名称的数据绘制地图,形如第2节中的示例。

(4)扩展方法:取地图层级路径。如得到“中国-湖南-长沙市”的路径,且相应的名称可点击跳转。

详细实现代码请访问:https://github.com/triplestudio/helloworld/tree/master/china_map

4.达成应用效果

4.1可钻取的中国地图

使用以下代码即可在指定的元素中绘制一幅可钻取的中国地图。

ChinaMap.loadMap('map', 'china', true);

方法 ChinaMap.loadMap 后会返回 echarts 图表对象,可以进一步进行操作。这里,使用以下代码在钻取时得到层级路径,以便达到可向上跳转的效果。

ChinaMap.loadMap('map', 'china', true).on('click', function(param){ 
 $("#path").html(ChinaMap.formatPath('map', param.name));
});

ECharts地图绘制和钻取简易接口详解

4.2各省地图

由于只需要指定名称和显示元素ID,那么遍历各省名称即可快速完成各省地图的绘制。

for(var prov in ChinaMap.provinces){
  $("#main").append("<div id='" + ChinaMap.provinces[prov] + "' class='box'></div>");
  ChinaMap.loadMap(ChinaMap.provinces[prov], prov);
}

ECharts地图绘制和钻取简易接口详解

相关代码与数据可在此下载:https://github.com/triplestudio/helloworld/releases

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jquery 学习笔记 传智博客佟老师附详细注释
Sep 12 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
Feb 04 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
Node.js开发指南中的简单实例(mysql版)
Sep 17 Javascript
javaScript中的this示例学习详解及工作原理
Jan 13 Javascript
javascript实现10个球随机运动、碰撞实例详解
Jul 08 Javascript
使用JavaScript实现ajax的实例代码
May 11 Javascript
zTree jQuery 树插件的使用(实例讲解)
Sep 25 jQuery
加载 vue 远程代码的组件实例详解
Nov 20 Javascript
vue 简单自动补全的输入框的示例
Mar 12 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
详解Vue源码学习之双向绑定
Apr 10 Javascript
vue cli安装使用less的教程详解
Jul 12 #Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 #Javascript
django js 实现表格动态标序号的实例代码
Jul 12 #Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 #Javascript
微信小程序开发常见问题及解决方案
Jul 11 #Javascript
使用vue for时为什么要key【推荐】
Jul 11 #Javascript
利用Angular7开发一个Radio组件的全过程
Jul 11 #Javascript
You might like
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
组合算法的PHP解答方法
2012/02/04 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
javascript学习网址备忘
2007/05/29 Javascript
自己的js工具 Event封装
2009/08/21 Javascript
分页栏的web标准实现
2011/11/01 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
javascript常用方法总结
2015/05/14 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
Python实现针对中文排序的方法
2017/05/09 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
python制作抖音代码舞
2019/04/07 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
公司廉洁自律承诺书
2014/03/27 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
个人考核材料
2014/05/15 职场文书
学生干部培训方案
2014/06/12 职场文书
政工师工作总结2015
2015/05/26 职场文书
怒海潜将观后感
2015/06/11 职场文书
创业计划书之水果店
2019/07/18 职场文书
Python集合set()使用的方法详解
2022/03/18 Python