AGS API for JavaScript 图表上地图

原文:AGS API for JavaScript 图表上地图

图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, height
		        lang.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和美观问题,如背景非透明(这是图表框架限制的……)、图表压盖等。还请期待。

时间: 2025-01-20 10:40:00

AGS API for JavaScript 图表上地图的相关文章

利用arcgis api for javascript实现在地图上点的弹出(我的信息弹出不了)

问题描述 利用arcgis api for javascript实现在地图上点的弹出(我的信息弹出不了) 2C <!DOCTYPE html> Simple Map <style> html body #map { height: 100%; width: 100%; margin: 0; padding: 0; } body { background-color: #FFF; overflow: hidden; font-family: ""Trebuchet

ArcGIS API for Javascript 3.21地图开发实例(一、图形绘制和删除及popup弹出层)

前言 Arcgis是一个地理系统的平台,可用来进行数据数据展示或二次开发.这里我们所使用的是Arcgis对于JavaScript的api,也就是web端的api进行开发.我们使用的版本是3.21,这个版本包含了完整的2D地图的api.如果想对3D地图进行开发,可以使用4.4版本的api.在这个demo中,我们要完成如下的几个功能: 基本地图展示 搜索功能 图形绘制 图形点击显示详情 图形删除 在本篇博客的结尾可以看到本例的下载链接. 先来看程序的截图: 首先是页面打开时: 接下来是使用搜索功能时

javascript使用百度地图api和html5特性获取浏览器位置

 本文介绍了javascript使用百度地图api和html5特性获取浏览器位置的小功能,大家参考使用吧 代码如下: <!DOCTYPE html> <html> <body> <p id="demo">点击这个按钮,获得您的位置:</p> <button onclick="getLocation()">试一下</button> <script src="http:/

ArcGIS API for Silverlight 实现修改地图上的工程点位置

原文:ArcGIS API for Silverlight 实现修改地图上的工程点位置 #region 处理工程点点击编辑相关事件 public Graphic editgraphics = null; //待编辑的Graphics图层 public Graphic oldgraphics = null; //原先Graphics图层 public Symbol symbolold = null; /// <summary> /// 在地图上点击编辑点处理事件 /// </summary

《JavaScript构建Web和ArcGIS Server应用实战》——2.3 使用ArcGIS API for JavaScript创建应用程序的基本步骤

2.3 使用ArcGIS API for JavaScript创建应用程序的基本步骤 使用ArcGIS API for JavaScript创建任何GIS地图应用程序,都需要遵循一些步骤.假如想让地图成为应用程序的一部分,那么就需要你按照这些步骤来执行.在阅读本书时,我很难想象你不按照这些步骤来做会遇到怎样糟糕的情况.简而言之,你需要遵循以下步骤. 1.创建页面HTML代码. 2.引用ArcGIS API for JavaScript和样式表. 3.加载模块. 4.确保DOM可用. 5.创建地图

【百度地图API】如何制作商圈地图?行政地图?

原文:[百度地图API]如何制作商圈地图?行政地图? 摘要: 想要显示某一个区域,并且鼠标放上去,该区域就会变色.这时,你就需要巧用多边形覆盖物,和它的鼠标事件了! 快来看看去哪儿网的实例吧:http://hotel.qunar.com/city/beijing_city/#fromDate=2011-07-13&from=qunarHotel&toDate=2011-07-16     ---------------------------------------------------

ArcGIS API for JavaScript开发环境搭建及第一个实例demo

原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo        ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3.9,它提供了更为丰富而又强大的功能.              一.安装前准备        1.ArcGIS Server for JavaScript API各版本下载地址:http://support.esrichina-bj.cn/2011/0223/960.html,我们选择

arcgis ser...-arcgis api for javascript调用arcgis server服务

问题描述 arcgis api for javascript调用arcgis server服务 本地部署3.9版本.有时候例子页面的地图也不出来.调用也没实现.谁弄给看看.qq1279134579 解决方案 今天尝试在Linux环境下安装ArcGIS Server10.2,启动服务碰到一个错误:ERROR: Unable to start Xvfb on any port in the range 6600 - 6619.具体环境:Linux:Redhat 6.4 64BitArcGIS Ser

创建ArcGIS API for JavaScript的第一个示例程序

原文:创建ArcGIS API for JavaScript的第一个示例程序     在上一篇博客中已经介绍了如何搭建ArcGIS API for JavaScript开发环境,如果您还没有搭建好开发环境的话,参考博客:http://blog.csdn.net/zdw_wym/article/details/48678913.          如果开发环境搭建好了的话,那么今天我们继续来搭建我们的第一个ArcGIS API for JavaScript应用程序.     下面首先将代码贴出来,