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中使用了document和window哪些属性和方法小结
Sep 13 Javascript
HTML中的setCapture和releaseCapture使用介绍
Mar 21 Javascript
jquery插件制作 手风琴Panel效果实现
Aug 17 Javascript
用js判断页面是否加载完成实现代码
Dec 11 Javascript
javascript 循环调用示例介绍
Nov 20 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 Javascript
javascript常见用法总结
May 22 Javascript
node.js中的fs.createWriteStream方法使用说明
Dec 17 Javascript
Vue组件创建和传值的方法
Aug 17 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
Nov 19 Javascript
jQuery实现移动端笔触canvas电子签名
May 21 jQuery
vue-cropper插件实现图片截取上传组件封装
May 27 Vue.js
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
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
Javascript 继承机制的实现
2009/08/12 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
linux 下实现python多版本安装实践
2014/11/18 Python
python删除服务器文件代码示例
2018/02/09 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
python基于http下载视频或音频
2018/06/20 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
如何用JQuery进行表单验证
2013/05/29 面试题
团员个人的自我评价
2013/12/02 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
信仰纪录片观后感
2015/06/08 职场文书
入党申请书格式
2019/06/20 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang