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 相关文章推荐
javascript setTimeout和setInterval 的区别
Dec 08 Javascript
javascript-简单的计算器实现步骤分解(附图)
May 30 Javascript
jqgrid 表格数据导出实例
Nov 21 Javascript
javascript二维数组转置实例
Jan 22 Javascript
jQuery Real Person验证码插件防止表单自动提交
Nov 06 Javascript
15款最好的Bootstrap在线编辑器
Aug 03 Javascript
jQuery实现模糊搜索功能的方法分析
Jun 29 jQuery
详解使用React制作一个模态框
Mar 14 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
Mar 27 Javascript
一文了解Vue中的nextTick
May 06 Javascript
JavaScript 反射和属性赋值实例解析
Oct 28 Javascript
vue cli3适配所有端方案的实现
Apr 13 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
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
JavaScript 事件对象的实现
2009/07/13 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
详谈javascript异步编程
2016/02/21 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
python 字符串只保留汉字的方法
2018/11/16 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
Python的in,is和id函数代码实例
2020/04/18 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
美国在线印刷公司:PsPrint
2017/10/12 全球购物
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
介绍下WebSphere的安全性
2013/01/31 面试题
Java基础面试题
2014/07/19 面试题
应聘医药代表职位求职信
2013/10/21 职场文书
太太口服液广告词
2014/03/20 职场文书
电子工程求职信
2014/07/17 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
财务务虚会发言材料
2014/10/20 职场文书
作风建设整改方案
2014/10/27 职场文书
团员自我评价范文
2015/03/10 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书