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 iframe的相互操作浅析
Oct 14 Javascript
js关闭当前页面(窗口)的几种方式总结
Mar 05 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
Apr 17 Javascript
JavaScript移除数组元素减少长度的方法
Sep 05 Javascript
JS批量操作CSS属性详细解析
Dec 16 Javascript
jquery1.10给新增元素绑定事件的方法
Mar 06 Javascript
javascript 原型链维护和继承详解
Nov 26 Javascript
javascript中递归函数用法注意点
Jul 30 Javascript
Ajax使用原生态JS验证用户名是否存在
May 26 Javascript
JavaScript中利用for循环遍历数组
Jan 15 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
详解 TypeScript 枚举类型
Nov 02 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
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php析构函数的简单使用说明
2015/08/24 PHP
jquery之Document元素选择器篇
2008/08/14 Javascript
js tab 选项卡
2009/04/26 Javascript
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
详解Node中导入模块require和import的区别
2017/08/11 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python的净值数据接口调用示例分享
2016/03/15 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
通过实例了解python property属性
2019/11/01 Python
基于python实现计算两组数据P值
2020/07/10 Python
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
2016/12/20 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
护理学毕业生自荐信
2013/10/02 职场文书
金融专业个人求职信范文
2013/11/28 职场文书
入党申请人的自我鉴定
2013/12/01 职场文书
门卫人员岗位职责
2013/12/24 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
承租经营合作者协议书
2014/10/01 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
68句权威创业名言
2019/08/26 职场文书
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
python神经网络Xception模型
2022/05/06 Python
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL