统计图源代码_arcgis api 4.x for js 结合 Echarts4 实现统计图(附源码下载)

16cac2252aee70dcd095f6c99f1764a9.png

前言

关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 4.x for js:esri 官网 api,里面详细的介绍 arcgis api 4.x 各个类的介绍,还有就是在线例子:esri 官网在线例子,这个也是学习 arcgis api 4.x 的好素材。

参照 arcgis api 4.x for js 地图加载多个气泡窗口展示的基础上,实现 arcgis api 4.x for js 结合 Echarts4 实现统计图,核心思路地图叠加自定义 div 容器,通过监听地图的变化事件,从而动态刷新 div 窗口的位置变化,div 容器渲染 echarts4 统计图即可,额外体验效果稍微优化的是,在地图监听事件,根据当前地图级别 zoom,动态改变 div 容器的统计图大小,避免地图缩小时候,统计图表显示过大影响美观。

实现效果如下:

cd0f80d232b4c41988e2561b81d4a212.png

ad17060c6a3ed25d694cb0ad6a0c893e.png

a85e2cd31d267c0b70017e25ab35e63c.png

0f57c57408f986097fbaf314c859859f.png

801b1e58199af6b2ff9910a19672e268.png
  • 地图监听事件
 //视图加载完成 
      view.when(function(){ 
 //监听地图变化事件,对应刷新统计图位置 
          view.watch("extent", function () { 
             relocatePopup(); 
          }); 
          view.watch("rotation", function () { 
             relocatePopup(); 
          }); 
 //地图加载完,初始化统计图 
          echartsMapInit(); 
 
      }); 
 //统计图窗口位置 
 function relocatePopup(e){ 
 for (var i = 0; i < echartsInfos.length; i++) { 
 var echartsInfo = echartsInfos[i]; 
 //坐标转换 
 var mapPoint = { 
 x: echartsInfo.x, 
 y: echartsInfo.y, 
 spatialReference: view.spatialReference 
                }; 
 var screenPoint = view.toScreen(mapPoint); 
 var obj = {}; 
                obj.x =screenPoint.x; 
                obj.y =screenPoint.y; 
                obj.option = echartsInfo.option; 
                obj.id = echartsInfo.id; 
                obj.echartsObj  = echartsInfo.echartsObj; 
 //刷新统计图窗口位置 
                positionEchartsMap(obj); 
           } 
      } 
  • 刷新统计图窗口位置
 //刷新统计图窗口位置 
 function positionEchartsMap(obj){      
        $('#'+obj.id).css('transform', 'translate3d(' + obj.x + 'px, ' + obj.y + 'px, 0)'); 
 //动态改变echarts统计图div大小 
 switch(view.zoom) { 
 case 0: 
 case 1: 
 case 2: 
 case 3: 
 case 4: 
 case 5: 
                $('#'+obj.id).css('height', '50px'); 
                $('#'+obj.id).css('width', '100px'); 
 break; 
 case 6: 
 case 7: 
 case 8: 
                $('#'+obj.id).css('height', '120px'); 
                $('#'+obj.id).css('width', '200px'); 
 break; 
 case 9: 
 case 10: 
                $('#'+obj.id).css('height', '150px'); 
                $('#'+obj.id).css('width', '300px'); 
 break; 
 case 11: 
 case 12: 
                $('#'+obj.id).css('height', '200px'); 
                $('#'+obj.id).css('width', '350px'); 
 break; 
 default: 
                $('#'+obj.id).css('height', '250px'); 
                $('#'+obj.id).css('width', '400px'); 
 
        } 
 if(obj.echartsObj) 
           obj.echartsObj.resize();  
      } 
  • echarts 统计图初始化加载
 //初始化写入统计图的数据 
 function echartsMapInit(){ 
        echartsInfos = []; 
        echartsInfos.push({ 
 //地图坐标 
                x: 113.3684, 
 y: 23.1323, 
 content: '<div id="info1" style="height:150px;width:300px;position:absolute;"></div>', 
 //div的id唯一标识
……

更多的详情见

arcgis api 4.x for js 结合 Echarts4 实现统计图(附源码下载) - 小专栏​xiaozhuanlan.com
8c2008573de8f4747558e186b22be0be.png

文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波

GIS之家店铺:GIS之家

GIS之家源码咨询:GIS之家webgis入门开发系列demo源代码咨询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值