图1

图2

图3

-------------------------------------华丽丽的分割线-----------------------------------

图4

图5

……图片欣赏到这吧,我想各位已经知道要表达什么了。先来解释一下图片,图1、2和3是12、13和14三年的生产总值在ArcMap的不同表达,是不是觉得表达很简单、很直观也很粗暴!图4和图5展示的是全国农林牧渔业发生洪涝灾害后的统计情况,这个可是在浏览器上展示的噢,只是展示的,然而。。。。。。然而在这个网络流行的社会,我们不会为了看到这样一副美丽直观的地图来携带这个ArcMap或者对每一种表达都发一个如图4和图5这样效果的服务。而且,还不能和地图交互,同时,伟大的ArcGIS API for JavaScript也没有提供相关接口,是不是感觉到天已经黑了。

                

他们的内心是崩溃的……

伟大的GISer来了———想要和地图交互效果的众生们,你们的黎明就要来了!

话说回来,实现图表上图,个人理解有两种方式。

            

某天在AGS群里突然发现有个大神(望留名)已经实现的在地图上面展示图表的,而且自己写了图标的样式。部分代码如下:

constructor: function (parameters) {lang.mixin(this, parameters);isContentShowing = false;domClass.add(this.domNode, "myInfoWindow");this._content = domConstruct.create("div", { "class": "content" }, this.domNode);this._eventConnections = [];domUtils.hide(this.domNode);this.isShowing = false;},setMap: function (map) {this.inherited(arguments);this._eventConnections.push(map.on("pan", lang.hitch(this, this.__onMapPan)));this._eventConnections.push(map.on("extent-change", lang.hitch(this, this.__onMapExtChg)));this._eventConnections.push(map.on("zoom-start", lang.hitch(this, this.__onMapZmStart)));this._eventConnections.push(map.on("zoom", lang.hitch(this, this.onMapZm)));},

其代码调用部分:

var infoWindow = new ChartInfoWindow({domNode: domConstruct.create('div', null, document.getElementById('map'))});infoWindow.setMap(map);var nodeChart = null;nodeChart = domConstruct.create("div", { id: 'nodeTest' + i, style: "width:120px;height:50px" }, win.body());var chart = makeChart(nodeChart,showFields,max,i);//optinalChart = chart;infoWindow.resize(122, 52);//计算几何的中心位置,将图表信息框放置于此var labelPt = new Point(Data[i][1],Data[i][2],map.SpatialReference);infoWindow.setContent(nodeChart);infoWindow.__mcoords = labelPt;infoWindow.show(map.toScreen(labelPt));

按照程序员的做法,肯定是啃源码!一看,其大致思路是infowindowbase,一看调用,确实有点费劲,心里痒痒、所以走起了我的代码优化之路,经过混天地暗的奋斗,终于搞定。

constructor: function (parameters) {//map, chartPoint, chart, width, heightlang.mixin(this, parameters);isContentShowing = false;this.domNode= domConstruct.create('div',null, document.getElementById('map_root').parentNode);domClass.add(this.domNode, "myInfoWindow");domUtils.hide(this.domNode);this._content = domConstruct.create("div", { "class": "content"}, this.domNode);this.setContent(this.chart);this.__mcoords= this.chartPoint;this._eventConnections = [];this.isShowing = false;this.setMap(this.map);this.show(this.map.toScreen(this.chartPoint));this.resize(this.width, this.height);},

调用部分:

var chartInfo= new ChartInfoWindow({map: map,chart:nodeChart,chartPoint: chartPoint,width: 123,height: 123});

一点运行心情如同下面这图画。

哈哈,不说废话了,直接看结果。

写在最后:

代码实现了从地图要素中读取属性数据,然后用dojo的图表展示出来。当然也可以使用Echarts、amCharts、D3或者highCharts等等的。祝好运。

测试示例依然存在一些Bug和美观问题,如背景非透明(这是图表框架限制的……)、图表压盖等。还请期待。

AGS API for JavaScript 图表上地图相关推荐

  1. ArcGIS API for JavaScript创建 3D 地图

    1.引用ArcGIS API for JavaScript <link rel="stylesheet" href="https://js.arcgis.com/4 ...

  2. 前端调用百度地图API,解决ios上地图不显示、https访问不了等问题

    注册申请百度地图ak 不会的童鞋们点链接 这里还是说一下注册的时候要注意的白名单填写项,如不确定直接写 * 号 下面说具体操作 在页面引入js文件 <script type="text ...

  3. ArcGIS API for javascript开发笔记 —— 地图打印

    前段时间的一个项目用到了地图的打印功能.当时遇到了一个GraphicLayer中TextSymbol汉字打印乱码和文字在地图中过大的问题, 后来经过分析发现,汉字乱码是中文字体的原因,文字太大是由于D ...

  4. ArcGIS API for JavaScript——地图展示

    ArcGIS API for JavaScript 能够实现的最基本功能就是地图展示,包括地图缩放.平移.定位.实时显示坐标.展示地图要素(指北针.比例尺.图例).切换地图等.本文将详细介绍地图展示的 ...

  5. ArcGIS API for JavaScript根据两个点坐标在地图上画线

    ArcGIS API for JavaScript根据两个点坐标在地图上画线 比如说a(xxxx,xxxxx),b(xxxx,xxxxx).利用这两个点画一条线 var polyline = new ...

  6. 地图小部件—ArcGIS API for JavaScript

    电子地图和传统的纸质地图最大的区别就是交互的程度不一样,而交互性很大程度上由地图的小部件所控制.传统的纸制地图主要有三个基本的部件(要素):比例尺.指北针.图例,而电子地图有更多的交互性小部件选择,在 ...

  7. 在移动设备中创建ArcGIS API for JavaScript地图应用程序

    本教程将演示如何通过响应式移动专用布局窗口小部件创建移动友好的webapp 1.支持的设备 这个模板支持安卓和IOS横向和纵向姿态,它使用Dojo Mobile框架并包含Dojo标题窗口等小部件. 2 ...

  8. html插入地图的方法,JavaScript接入百度地图API的方法步骤

    一.百度地图API接入 1.搜索百度地图开发平台 2.注册百度账号 3.登陆并申请成为开发者 4.在百度地图开发平台的首页选择控制台,在控制台中创建应用 创建好应用以后就能在控制台我的应用中看到这个应 ...

  9. javascript调用百度地图api

    百度地图提供sdk,javascript api等多种客户端调用方式,通常在网页上用的比较多,也就是javascript api,这里根据自己的使用,简单介绍一下如何快速使用javascript调用百 ...

最新文章

  1. mysql读取sql脚本_Pandas直接读取sql脚本的方法
  2. python和c哪个好找工作-Python和c哪个效率高一些
  3. 阿里云OSS图片上传类
  4. 十一、Python异常处理
  5. IOS 打包证书签名 shell脚本
  6. android文件管理器,ES文件浏览器(com.estrongs.android.pop) - 4.2.4.6.1 - 应用 - 酷安
  7. Alibaba 开源工具 Arthas 使用
  8. PIC18F中断定时器
  9. 【前端后端运维】Web开发人员学习路线,汇总整理
  10. 从程序员到软件设计师
  11. Hibernate的批量处理-批量更新
  12. Delphi学习视频02
  13. 计算机网络专业运动会入场式,高校运动会方阵入场式花样百出
  14. 一本正经的聊一聊面试官的心理
  15. Linux Ansys
  16. Glide图片框架使用详细介绍(一),kotlin从入门到进阶实战电子书
  17. 05、汇编语言和汇编软件
  18. win7计算机节电模式,极力推荐!win7系统的省电模式应该怎么关闭呢?
  19. ipad2优酷在线看视频卡死解决方法
  20. 用python制作相册影集_影集制作APP哪个好?就用这些APP把照片做成相册!

热门文章

  1. Symantec Backup Exec Remote Agent 2010在Redhat Enterprise 6.6上启动问题
  2. Linux--内存结构
  3. 今日学习心得——装饰模式
  4. 经济危机下企业倒闭的真相
  5. cad2020 开始_如何设置CAD2020经典模式,原来这么简单,一起来看看
  6. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★
  7. 【Flutter】Animation 动画 ( Flutter 动画基本流程 | 创建动画控制器 | 创建动画 | 设置值监听器 | 设置状态监听器 | 布局中使用动画值 | 动画运行 )
  8. 【Android 内存优化】Bitmap 图像尺寸缩小 ( 考虑像素密度、针对从不同像素密度资源中解码对应的 Bitmap 对象 | inDensity | inTargetDensity )
  9. 【Kotlin】Kotlin 单例 ( 懒汉式 与 恶汉式 | Java 单例 | Kotlin 单例 | 对象声明 | 伴生对象 | get 方法 | ? 与 !! 判空 )
  10. 【嵌入式开发】 ARM 关闭 MMU ( 存储体系 | I/D-Cache | MMU | CP15 寄存器 | C1 控制寄存器 | C7 寄存器 | 关闭 MMU )