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 建设银行登陆键盘
Jun 10 Javascript
js关闭子窗体刷新父窗体实现方法
Dec 04 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
Feb 02 Javascript
使用POST方式弹出窗口的两种方法示例介绍
Jan 29 Javascript
JS通过ajax动态读取xml文件内容的方法
Mar 24 Javascript
js实现将选中值累加到文本框的方法
Aug 12 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
浅谈JavaScript的push(),pop(),concat()方法
Jun 03 Javascript
jQuery动态移除和添加背景图片的方法详解
Mar 07 Javascript
第一次记录Bootstrap table学习笔记(1)
May 18 Javascript
微信小程序倒计时功能实例代码
Jul 17 Javascript
Angular设置别名alias的方法
Nov 08 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 批量删除数据的方法分析
2009/10/30 PHP
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
PHP实现下载功能的代码
2012/09/29 PHP
PHP容易忘记的知识点分享
2013/04/30 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
javascript 动态修改css样式方法汇总(四种方法)
2015/08/27 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
django认证系统 Authentication使用详解
2019/07/22 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
英文简历中的自我评价
2013/10/06 职场文书
自我评价怎么写正确呢?
2013/12/02 职场文书
执行力心得体会
2013/12/31 职场文书
家电业务员岗位职责
2014/03/10 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
毕业生个人自荐书
2015/03/05 职场文书
离职告别感言
2015/08/04 职场文书
Win2008系统搭建DHCP服务器
2022/06/25 Servers