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 相关文章推荐
网页常用特效代码整理
Jun 23 Javascript
JavaScript 对象、函数和继承
Jul 07 Javascript
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
Apr 15 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
Jan 23 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
Jun 06 Javascript
Jquery操作js数组及对象示例代码
May 11 Javascript
JavaScript中的prototype原型学习指南
May 09 Javascript
最通俗易懂的javascript变量提升详解
Aug 05 Javascript
angularjs中$http异步上传Excel文件方法
Feb 23 Javascript
MVVM 双向绑定的实现代码
Jun 21 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
Dec 23 Javascript
js原生map实现的方法总结
Jan 19 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中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
php指定函数参数默认值示例代码
2013/12/04 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
JS表的模拟方法
2015/02/05 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
python关键字and和or用法实例
2015/05/28 Python
浅谈python可视化包Bokeh
2018/02/07 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Pytorch to(device)用法
2020/01/08 Python
python如何基于redis实现ip代理池
2020/01/17 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
汽车专业人才自我鉴定范文
2013/12/29 职场文书
实习生求职自荐信
2014/02/07 职场文书
创业计划书之酒吧
2019/12/02 职场文书
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python