define([ "dojo", "dojo/_base/declare", "dojo/_base/lang", "base/BaseWidget", "dojo/text!widgets/project/template.html", "widgets/project/config", "base/AppEvent", "base/ConfigData", "iframe/jcyj/js/dataShow.js", "dojo/dom", "dojo/dom-construct", "dojo/dom-attr", "dojo/dom-style", "dojo/on", "esri/layers/FeatureLayer", "controls/tab/TabControl", "esri/dijit/SymbolStyler", "esri/styles/basic", "dojo/_base/array", "esri/InfoTemplate", "esri/dijit/HorizontalSlider", "dojo/domReady!", "esri/tasks/QueryTask", "esri/tasks/query", "esri/symbols/PictureMarkerSymbol", "esri/layers/GraphicsLayer", "esri/symbols/Font", "esri/geometry/Point", "esri/SpatialReference", "esri/symbols/TextSymbol", "esri/Color", "esri/tasks/PrintTask", "esri/tasks/PrintTemplate", "esri/tasks/PrintParameters", "jslibs/ChartLayer", "esri/tasks/StatisticDefinition", "esri/graphic", "esri/geometry/Extent", "esri/symbols/SimpleFillSymbol", "esri/geometry/Circle", "widgets/index/loading", ], function (dojo, declare, lang, BaseWidget, template, config, AppEvent, ConfigData, dataShow, dom, domConstruct, domAttr, domStyle, on, FeatureLayer, TabControl, SymbolStyler, basic, arrayUtils, InfoTemplate, HorizontalSlider, domready, QueryTask, Query, PictureMarkerSymbol, GraphicsLayer, Font, Point, SpatialReference, TextSymbol, Color, PrintTask, PrintTemplate, PrintParameters, ChartLayer, StatisticDefinition, Graphic, Extent, SimpleFillSymbol, Circle) { var Widget = declare([BaseWidget], { widgetName: "projectWidget", label: "统计图", templateString: template, _config: null, _map: null, _tabControl: null, _styler: null, _selectLayer: null, _printer: null, _openprinturl: null, _FeatureLayer: null, thisObj: null, graphicsLayer: null, graphicsLayercol: null, _chartLayer: null, col: null, _openprinturl: null, defaultYear: 2015, XZQObjects: null, statisticsUrl: null, resultData: {}, chartTypeIndex: null, chartThemesIndex: null, constructor: function (options, srcRefNode) { this._map = options.map; }, postCreate: function () { }, startup: function () { projectObj = this; // $.ajax({ // type: "get", // url: getNativePath() + "resources/queryResourcesTree.do?soId=bbb7001c67c442540167c4a2a604000b", // data: { // "limit": 10000 // }, // dataType: "json", // async: false, // success: function (result) { // for (var i in result.data) { // if (result.data[i].resourcesName.indexOf("全景") != -1) { // result.data.splice(i, 1); // } // } // projectObj._config = result.data; // } // }); //创建tab控件 this._tabControl = new TabControl({ tab: [{ type: "indicatorStatistics", label: "指标统计图" }], cssPath: "controls/tab/TabControl.css" }, this.tabDom); this._tabControl.startup(); //构建指标统计页面,并添加监听事件等 projectObj._buildIndicatorDiv(); //构建年份统计页面,并添加监听事件等 // projectObj._buildYearDiv(); //初始化行政区 projectObj._getXZQ("全省", true); projectObj.col = [], graphicsLayer = new GraphicsLayer(); graphicsLayercol = new GraphicsLayer(); projectObj._chartLayer = new ChartLayer({}); projectObj._map.addLayer(graphicsLayercol); projectObj._map.addLayer(graphicsLayer); projectObj._map.addLayer(projectObj._chartLayer); this.inherited(arguments); projectObj._queryxing(); AppEvent.addAppEventListener("clearall", lang.hitch(this, function (evt) { if (evt.idname != projectObj.widgetName) { graphicsLayer.clear(); graphicsLayercol.clear(); projectObj._chartLayer.clear(); projectObj._buildIndicatorTree(projectObj._config); } })); AppEvent.addAppEventListener(AppEvent.APPLICATION_CLEAR, lang.hitch(this, function () { graphicsLayer.clear(); graphicsLayercol.clear(); projectObj._chartLayer.clear(); $("#chart").empty(); $("#unit").remove(); })); }, open: function () { this.inherited(arguments); this._tabControl.changeActiveTab("indicatorStatistics"); }, _buildIndicatorDiv: function () { var indicatorStatisticsDiv = domConstruct.create("div", {}); var heard = domConstruct.create("div", { style: "padding:4px;padding-right: 0px;width: 98%;" }, indicatorStatisticsDiv); var heardone = domConstruct.create("div", {}, heard); var heardtwo = domConstruct.create("div", {}, heard); var heardthree = domConstruct.create("div", {}, heard); domConstruct.create("input", { type: "button", value: "选择制图范围:" }, heardone); var fanwei = domConstruct.create("select", { id: "XZQSelect" }, heardone); // domConstruct.create("input", { // type:"button", // value:"选择指标年份" // }, heardtwo); // var years=domConstruct.create("select", { // id:"yearSelect" // }, heardtwo); domConstruct.create("input", { type: "button", value: "选择数据来源:" }, heardthree); var lei = domConstruct.create("select", { id: "typeSelect" }, heardthree); var div = domConstruct.create("div", { style: "padding:10px;" }, indicatorStatisticsDiv); domConstruct.create("ul", { id: "tree_pro", class: "ztree" }, div); var foot = domConstruct.create("div", { style: "padding:3px;", class: "foot" }, indicatorStatisticsDiv); var customBtn = domConstruct.create("button", { class: "floatbutton", innerHTML: "样式配置" }, foot); var customBtns = domConstruct.create("button", { class: "floatbutton", innerHTML: "清除配置", style: "margin-left:34px;" }, foot); /* var savebutton = domConstruct.create("input", { type: "button", value: "点击打印" },foot);*/ domConstruct.create("option", { value: "全部", innerHTML: "全部", selected: true }, lei); for (var i = 0; i < projectObj._config.length; i++) { if (projectObj._config[i].resourcesPid == 0) { domConstruct.create("option", { value: projectObj._config[i].resourcesName, innerHTML: projectObj._config[i].resourcesName, }, lei); } } this._tabControl.setContent("indicatorStatistics", indicatorStatisticsDiv); $("#XZQSelect").change(function () { var code = $("#XZQSelect").val(); if ($("#XZQSelect").find("option:selected").text() == "全省") { projectObj._getXZQ("全省", false); } else { projectObj._getXZQ(code, false); } }); $("#typeSelect").change(function () { $("#chart").empty(); $(".cur #tuc").empty(); $(".cur #tucs").empty(); $("#zhibiao1 p").removeClass("tucheck"); $("#zhibiao2 p").removeClass("tucheck"); $.fn.zTree.destroy("tree_pro"); if ($("#typeSelect").val() == "全部") { projectObj._buildIndicatorTree(projectObj._config); } else { var arr = []; for (var int = 0; int < projectObj._config.length; int++) { if ($("#typeSelect").val() == projectObj._config[int].resourcesName) { arr.push(projectObj._config[int]); break; } } for (var n = 0; n < projectObj._config.length; n++) { if (arr[0].resourcesId == projectObj._config[n].resourcesPid) { arr.push(projectObj._config[n]); } } projectObj._buildIndicatorTree(arr); } }); on(customBtn, "click", lang.hitch(this, function (evt) { $('#projectExtent').fadeIn(); })); on(customBtns, "click", lang.hitch(this, function (evt) { var treeObj1 = $.fn.zTree.getZTreeObj("tree_pro"); var nodes = treeObj1.getCheckedNodes(); for (var i = 0, l = nodes.length; i < l; i++) { treeObj1.checkNode(nodes[i], false, true, true); } graphicsLayer.clear(); graphicsLayercol.clear(); projectObj._chartLayer.clear(); $("#unit").remove(); $("#chart").empty(); $("#zhibiao1 p").removeClass("tucheck"); $("#zhibiao2 p").removeClass("tucheck"); })); //构建目录树 projectObj._buildIndicatorTree(projectObj._config); }, _buildIndicatorTree: function (searchCatalog) { //动态构建图层目录树 var resultObj = searchCatalog; var ztreeObj = []; for (var i = 0; i < resultObj.length; i++) { if (resultObj[i].resourcesName.indexOf("点") == "-1") { var searchCatalog = {}; searchCatalog.id = resultObj[i].resourcesId; searchCatalog.pId = resultObj[i].resourcesPid; searchCatalog.name = resultObj[i].resourcesName; searchCatalog.path = resultObj[i].resourcesUrl; if (resultObj[i].resourcesPid == "0") { searchCatalog.nocheck = true; } ztreeObj.push(searchCatalog); } } var setting = { check: { enable: true }, data: { simpleData: { enable: true } }, callback: { beforeCheck: projectObj._beforeCheck, onCheck: projectObj._zTreeOnCheck } }; $.fn.zTree.init($("#tree_pro"), setting, ztreeObj); }, _beforeCheck: function (treeId, treeNode) { var Node = treeNode.getParentNode(); var treeObj = $.fn.zTree.getZTreeObj("tree_pro"); var nodes = treeObj.getCheckedNodes(); if (nodes.length > 4) { for (var n in nodes) { if (treeNode.tId == nodes[n].tId) { return true; } } alert("支持最多5项指标参与统计图制作!"); return false; } // for (var i in nodes) { // var node = nodes[i].getParentNode(); // if (node.tId != Node.tId) { // alert("只能选同一目录下的资源"); // return false; // } // } }, _zTreeOnCheck: function (event, treeId, treeNode) { //复选框选择事件 var treeObj = $.fn.zTree.getZTreeObj("tree_pro"); var nodes = treeObj.getChangeCheckedNodes(); for (var index in nodes) { //选中的节点 if (!nodes[index].isParent) { if (nodes[index].checked) { nodes[index].checkedOld = true; var nodeobj = nodes[index]; if ($("#tuc") != undefined) { var str = ""; str += "
"; str += "" + nodeobj.name + ""; str += "" + nodes[index].name + ""; str += "
"; $("#tuc").append(str); str = ""; str += "
"; str += "" + nodeobj.name + ""; str += "" + nodes[index].name + ""; // if (nodes[index].unit != undefined) { // str += "" + nodes[index].unit_type + "," + nodes[index].unit + ""; // } str += "
"; $("#tucs").append(str); $("#" + nodeobj.tId + "a").click(function (evt) { if (this.className.indexOf("tucheck") != -1) { $(this).removeClass("tucheck"); } else { $("#tuc .tuc_check").removeClass("tucheck"); $(this).addClass("tucheck"); } //判断选择重要湿地则屏蔽面积统计 if ($(this).text().indexOf('重要湿地') > -1 && $(this).hasClass("tucheck")) { $('#zhibiao1 p').eq(1).hide().removeClass("tucheck"); } else { if ($('#zhibiao1 p').eq(1).is(":hidden")) { $('#zhibiao1 p').eq(1).show(); } } }); $("#" + nodeobj.tId + "s").click(function (evt) { if (this.className.indexOf("tucheck") != -1) { $(this).removeClass("tucheck"); } else { //判断是否选择了等级图 if ($("#tuxing .img_check").index() == 2 && $("#tucs .tucheck").length > 0) { alert("等级图只能选择一个数据"); return; } $(this).addClass("tucheck"); } //判断选择重要湿地则屏蔽面积统计 if ($(this).text().indexOf('重要湿地') > -1 && $(this).hasClass("tucheck")) { $('#zhibiao2 p').eq(1).hide().removeClass("tucheck"); } else { for (var i in $("#tucs samp")) { if ($("#tucs samp").eq(i).text().indexOf("省重要") != -1 && $("#tucs div").eq(i).hasClass("tucheck")) { return; } } if ($('#zhibiao2 p').eq(1).is(":hidden")) { $('#zhibiao2 p').eq(1).show(); } } }); } } else { var nodeobj = nodes[index]; nodes[index].checkedOld = false; if ($("#tuc") != undefined) { $("#" + nodeobj.tId + "a").unbind("click"); $("#" + nodeobj.tId + "s").unbind("click"); $("#" + nodeobj.tId + "s").remove(); $("#" + nodeobj.tId + "a").remove(); } } } } }, _queryxing: function () { $("#tuxing > img").click(function (evt) { if ($(this).index() == 2 && $("#tucs .tucheck").length > 1) { alert("等级图只能选择一个数据"); return; } projectObj.chartTypeIndex = $(this).index(); $("#tuxing img").removeClass("img_check"); $(this).addClass("img_check"); }); $("#fengge > img").click(function (evt) { projectObj.chartThemesIndex = $(this).index(); $("#fengge img").removeClass("img_check"); $(this).addClass("img_check"); }); $(".tuc_check").click(function (evt) { if (this.className.indexOf("tucheck") != -1) { $(this).removeClass("tucheck"); } else { $(this).addClass("tucheck"); } }); $(".tuc_checks").click(function (evt) { if (this.className.indexOf("tucheck") != -1) { $(this).removeClass("tucheck"); } else { $(this).addClass("tucheck"); } }); //指标选择按钮点击事件 $("#zhibiao1 p").click(function () { $("#zhibiao1 p").removeClass("tucheck"); $(this).addClass("tucheck"); }); $("#zhibiao2 p").click(function () { $("#zhibiao2 p").removeClass("tucheck"); $(this).addClass("tucheck"); }); //提交设置点击事件------开始查询并生成统计图 $("#projectbut").click(function () { if ($("#tucs .tucheck").length > 0) { if (projectObj.chartTypeIndex == null) { alert("请选择图表类型!"); return; } if (projectObj.chartThemesIndex == null) { alert("请选择图表风格!"); return; } if (!$("#zhibiao2 p").hasClass("tucheck")) { alert("请选对比图统计指标!"); return; } //获取选中分类 var names = []; //参与统计属性名 var name_check = $("#tucs .tucheck"); //选中参与统计的图层
for (var i = 0; i < name_check.length; i++) { //遍历选中参与统计的图层 var sp = $(name_check[i]).find("span"); names[i] = $(sp[0]).html() + $("#zhibiao2 .tucheck").text(); } if (names.length == 0) { alert("请选择数据参与统计图制作!"); return; } } if ($("#tuc div").hasClass("tucheck") && !$("#zhibiao1 p").hasClass("tucheck")) { alert("请选分级图统计指标!"); return; } if (!$("#tuc div").hasClass("tucheck") && $("#tucs .tucheck").length < 0){ alert("请选择数据"); } //统计配置框淡出 $('#projectExtent').fadeOut(); $("#bg").show(); $("#unit").remove(); var timer = setTimeout(function () { $("#bg").hide(); }, 30000); //先清空图形图层---清空之前的统计图 graphicsLayer.clear(); graphicsLayercol.clear(); projectObj._chartLayer.clear(); $("#chart").empty(); //设置图表色带 projectObj._sedai(); //开始执行查询---循环查询每一个图层 var treeObj = $.fn.zTree.getZTreeObj("tree_pro"); projectObj.statisticsUrl = treeObj.getCheckedNodes(); queryData(projectObj.statisticsUrl); function queryData(url) { var statisticsUrl = url; var queryTask = new QueryTask(statisticsUrl[0].path); var query = new Query(); var StatDef = new StatisticDefinition(); StatDef.statisticType = "count"; StatDef.onStatisticField = "CITY"; StatDef.outStatisticFieldName = "湿地个数"; var StatDef1 = new StatisticDefinition(); StatDef1.statisticType = "sum"; StatDef1.onStatisticField = "面积" StatDef1.outStatisticFieldName = "面积"; query.groupByFieldsForStatistics = ["CITY"]; query.outStatistics = [StatDef, StatDef1]; query.returnGeometry = false; query.outFields = ["*"]; var sql = ""; if ($("#XZQSelect").find("option:selected").text() != "全省") { for (var j = 0; j < projectObj.XZQObjects.length; j++) { sql = sql == "" ? "CITY='" + projectObj.XZQObjects[j].attributes["CITY"] + "'" : sql + " OR CITY='" + projectObj.XZQObjects[j].attributes["CITY"] + "'"; } query.where = sql; } else { query.where = "1=1"; } queryTask.execute(query, function (results) { console.log(results); if (results.features.length < 1) { alert("所选统计区域内没有相关数据"); clearTimeout(timer); $("#bg").hide(); return; } for (var i in results.features) { if (results.features[i].attributes["CITY"].indexOf("、") != -1) { var city = results.features[i].attributes["CITY"].split("、"); for (var j in city) { for (var k in results.features) { if (city[j] == results.features[k].attributes["CITY"]) { results.features[k].attributes["湿地个数"] = results.features[i].attributes["湿地个数"] + results.features[k].attributes["湿地个数"]; break; } } } results.features.splice(i, 1); } } for (var b = 0; b < projectObj.XZQObjects.length; b++) { for (var int = 0; int < results.features.length; int++) { if (results.features[int].attributes["CITY"] == projectObj.XZQObjects[b].attributes["CITY"]) { var centerpoint = projectObj.XZQObjects[b].geometry.getCentroid(); $.extend(results.features[int], { geometry: projectObj.XZQObjects[b].geometry, centerpoint: centerpoint, }); break; } if (int == results.features.length - 1) { var centerpoint = projectObj.XZQObjects[b].geometry.getCentroid(); results.features.push({ "attributes": { "CITY": projectObj.XZQObjects[b].attributes["CITY"], "湿地个数": 0, "面积": 0 }, geometry: projectObj.XZQObjects[b].geometry, centerpoint: centerpoint, }); break; } } } // console.log(results); // projectObj.resultData.push(statisticsUrl[0].name); projectObj.resultData[statisticsUrl[0].name] = results.features; statisticsUrl.splice(0, 1); if (statisticsUrl.length > 0) { queryData(statisticsUrl); return; } else { //渲染底图 projectObj._renderBaseMap(projectObj.resultData); if ($("#tucs .tucheck").length > 0) { //柱状图 if (projectObj.chartTypeIndex == 0) { projectObj._renderByBar(projectObj.resultData); } //饼状图 else if (projectObj.chartTypeIndex == 1) { projectObj._chartLayer.setShowFields(names); projectObj._chartLayer.setChartThemesIndex(projectObj.chartThemesIndex); projectObj._chartLayer.setChartType("Pie"); projectObj._render(projectObj.resultData); } //等级图 else { projectObj._renderByDot(projectObj.resultData); } } projectObj.resultData = []; var extent = new Extent(111.684889985, 24.208129066, 120.359378921, 30.359130312, new SpatialReference({ wkid: 4490 })); projectObj._map.setExtent(extent); $("#bg").hide(); } }, function (error) { console.log(error); }); } }); //设置图形图层的鼠标移动事件,当鼠标经过条形图时添加浮动气泡 graphicsLayer.on('mouse-move', function (e) { $('#text1').remove(); projectObj._map.setMapCursor("pointer"); var textDiv = dojo.doc.createElement("div"); dojo.attr(textDiv, { "id": "text1" }); dojo.style(textDiv, { "left": e.layerX + 10 + "px", "top": e.layerY + 10 + "px", "position": "absolute", "z-index": 99999, "background": "#fcffd1", "font-size": "10px", "border": "1px solid #0096ff", "padding": "0.1em 0.3em 0.1em", "font-size": "11px", "border-radius": "3px", }); textDiv.innerHTML = e.graphic.attributes.NAME + e.graphic.attributes.UNIT_TYPE + ":" + e.graphic.attributes.CHANG + e.graphic.attributes.UNIT; $('#mapcontentClass').append(textDiv); graphicsLayer.on('mouse-out', function (e) { projectObj._map.setMapCursor("default"); $('#text1').remove(); }); }); }, //色带 _sedai: function () { var zhi = $("#inputselect").val(); projectObj.col = []; if (zhi == 1) { projectObj.col[0] = "183"; projectObj.col[1] = "48"; projectObj.col[2] = "36"; } else if (zhi == 2) { projectObj.col[0] = "0"; projectObj.col[1] = "153"; projectObj.col[2] = "67"; } }, //行政区 _getXZQ: function (code, isinit) { if (isinit) { $("#bg").show(); if (!ConfigData.XZQfeatures) { var queryTask = new QueryTask(ConfigData.XZQUrl); var query = new Query(); query.returnGeometry = true; query.outFields = ["*"]; query.orderByFields = ["CITY"]; if (code == "全省") { query.where = "1=1"; } else { query.where = "CITY like '%" + code + "%'"; } if (!isinit) { $("#bg").show(); } queryTask.execute(query, function (results) { projectObj.XZQObjects = results.features; $("#bg").hide(); //初始化获取18市区数据,添加到下拉框 domConstruct.create("option", { value: "全省", innerHTML: "全省", selected: true }, "XZQSelect"); for (var i = 0; i < projectObj.XZQObjects.length; i++) { domConstruct.create("option", { value: projectObj.XZQObjects[i].attributes["CITY"], innerHTML: projectObj.XZQObjects[i].attributes["CITY"] }, "XZQSelect"); } $("#bg").hide(); }, function (error) { console.log(error); $("#bg").hide(); }); return; } else { projectObj.XZQObjects = ConfigData.XZQfeatures; //初始化获取18市区数据,添加到下拉框 domConstruct.create("option", { value: "全省", innerHTML: "全省", selected: true }, "XZQSelect"); for (var i = 0; i < projectObj.XZQObjects.length; i++) { domConstruct.create("option", { value: projectObj.XZQObjects[i].attributes["CITY"], innerHTML: projectObj.XZQObjects[i].attributes["CITY"] }, "XZQSelect"); } $("#bg").hide(); return; } } else { if (code == "全省") { projectObj.XZQObjects = ConfigData.XZQfeatures; } else { for (var i in ConfigData.XZQfeatures) { if (ConfigData.XZQfeatures[i].attributes["CITY"].indexOf(code) != -1) { projectObj.XZQObjects = [ConfigData.XZQfeatures[i]]; return; } } } } }, //递归函数。用来遍历年份,使其同步,合并所有年份的数据 // _getYearData: function (index, yeararr, nodeobj, sql) { // var queryTask = new QueryTask(yeararr[index].url); // var query = new Query(); // query.outFields = ["区域名称", nodeobj.field]; // query.where = sql; // queryTask.execute(query, function (results) { // //projectObj.XZQObjects = results.features; // // for (var int = 0; int < projectObj.XZQObjects.length; int++) { // // for (var b = 0; b < results.features.length; b++) { // if (projectObj.XZQObjects[int].attributes.NAME == results.features[b].attributes["区域名称"]) { // var obj = {}; // obj[nodeobj.field + yeararr[index].name] = results.features[b].attributes[nodeobj.field] // $.extend(projectObj.XZQObjects[int].attributes, obj); // break; // } // } // // } // // index--; // if (index >= 0) { // projectObj._getYearData(index, yeararr, nodeobj, sql); // } // else { // graphicsLayer.clear(); // for (var i = 0; i < projectObj.XZQObjects.length; i++) { // if (projectObj.XZQObjects[i].attributes.NAME != "全省") { // var y = 0; // for (var int = 0; int < yeararr.length; int++) { // var dfd = nodeobj.name + yeararr[int].name; // var sdsds = projectObj.XZQObjects[i].attributes[dfd]; // var danwei = nodeobj.unit; // var danwei_type = nodeobj.unit_type; // var sdsds = projectObj.XZQObjects[i].attributes[dfd]; // var pictureMarkerSymbol = new PictureMarkerSymbol( // "assets/images/zhu" + int + ".png", 48, 200); // var height1 = sdsds * 1; // pictureMarkerSymbol.height = height1 > 100 ? height1 / 20 : height1; // pictureMarkerSymbol.width = 14; // if (int > 0) { // pictureMarkerSymbol.xoffset = (((y + 1) * 17) + 10); // } else { // pictureMarkerSymbol.xoffset = ((y + 1) * 17) + 10; // } // pictureMarkerSymbol.yoffset = (height1 > 100 ? height1 / 20 : height1) / 2; // var attr = { // "NAME": yeararr[int].name + "年," + nodeobj.name, // "CHANG": sdsds, // "UNIT": danwei, // "UNIT_TYPE": danwei_type // }; // // /*var taxLotExtent = projectObj.XZQObjects[i].geometry.getExtent(); // var cPoint = taxLotExtent.getCenter();*/ // var cPoint = projectObj.XZQObjects[i].geometry.getCentroid(); // var gra = new esri.Graphic(cPoint, pictureMarkerSymbol, attr); // graphicsLayer.add(gra); // y++; // } // } // // } // graphicsLayer.refresh(); // } // // // }, function (error) { // console.log(error); // }); // }, //渲染分级底图颜色 _renderBaseMap: function (e) { var feild = $("#tabCon1 #tuc .tucheck samp").text(); if (!feild) { return; } var features = e[feild]; var border = esri.Color.fromHex("#fff"); //获取统计指标 var att = $("#zhibiao1 .tucheck").text(); //根据统计指标从传入的数据中获取对应属性值 var opzhi = []; for (var ss = 0; ss < features.length; ss++) { opzhi[ss] = features[ss].attributes[att] * 1; } var maxInNumbers = Math.max.apply(Math, opzhi); var minInNumbers = Math.min.apply(Math, opzhi); var range_num = ($("#range_num").val()) * 1; var op = (maxInNumbers - minInNumbers) / range_num; //最大值减最小值除以5 if (att != undefined && att != null) { for (var z = 0; z < features.length; z++) { var dsd = 0; dsd = parseInt(((features[z].attributes[att]) * 1 - minInNumbers) / op + 1); if (dsd == 1) { projectObj.col[3] = "50"; } else if (dsd == 2) { projectObj.col[3] = "100"; } else if (dsd == 3) { projectObj.col[3] = "150"; } else if (dsd == 4) { projectObj.col[3] = "200"; } else if (dsd == 5 || dsd > 5) { projectObj.col[3] = "255"; } var myPolygon = { "geometry": { "rings": features[z].geometry.rings, "spatialReference": { "wkid": 4490 } }, "symbol": { "color": projectObj.col, "outline": { "color": border, "width": 1, "type": "esriSLS", "style": "esriSLSSolid" }, "type": "esriSFS", "style": "esriSFSSolid" } }; var gra = new esri.Graphic(myPolygon); graphicsLayercol.add(gra); } } }, //生成柱状图 _renderByBar: function (e) { var features = []; var unit_type = $("#zhibiao2 .tucheck").text(); //重新构造传入参数 for (var w in e) { var ary = []; for (var r in e[w]) { ary[r] = {}; ary[r]["name"] = e[w][r].attributes.CITY; ary[r][w + unit_type] = e[w][r]["attributes"][unit_type]; ary[r]["centerpoint"] = e[w][r]["centerpoint"]; ary[r]["geometry"] = e[w][r]["geometry"]; // ary[[e[w][r].attributes.CITY]][w + unit_type] = e[w][r]["attributes"][unit_type]; } features.push(ary); } //遍历构造后的参数,根据行政区合并数组 for (var b = 1; b < features.length; b++) { for (var c in features[0]) { for (var d in features[b]) { if (features[0][c].name == features[b][d].name) { $.extend(features[0][c], features[b][d]); features[b].splice(d, 1); } } } if (features[b].length != 0) { var x = features[0].concat(features[b]); features[0] = x; } } features = features[0]; //获取选中分类 var namesj = []; //参与统计属性名 var names = []; //参与统计属性名 var unit; //统计类型、单位,统计属性名 var name_check = $("#tucs .tucheck"); //选中参与统计的图层
for (var i = 0; i < name_check.length; i++) { //遍历选中参与统计的图层 namesj[i] = $(name_check[i]).find("samp").html(); var sp = $(name_check[i]).find("span"); names[i] = $(sp[0]).html() + $("#zhibiao2 .tucheck").text(); } if ($("#zhibiao2 .tucheck").text() == "面积") { unit = "公顷"; } else { unit = "个"; } if (names.length > 0) { //如果有参与统计的属性 var info; //定义颜色 if (projectObj.chartThemesIndex == 0) { info = "blue"; // var color = Color.fromHex("#0035d6"); } else if (projectObj.chartThemesIndex == 1) { info = "green"; // var color = Color.fromHex("#00cc21"); } else { info = "cyan"; // var color = Color.fromHex("#00b0cf"); } var color = Color.fromHex("#000000"); var opzhi = []; //对应参与统计属性名的属性值 for (var i = 0; i < features.length; i++) { for (var int in names) { var dfd = names[int]; if (features[i][dfd]) { opzhi.push(parseFloat(features[i][dfd])); } } } //计算参与统计的最值 var maxInNumbers = Math.max.apply(Math, opzhi); var minInNumbers = Math.min.apply(Math, opzhi); var cha = maxInNumbers - minInNumbers; var minP = 0.025; //构造柱状图 for (var i = 0; i < features.length; i++) { //遍历传入的统计数据 var y = 0; for (var int = 0; int < names.length; int++) { //遍历参与统计的属性 var dfd = names[int]; //参与统计的属性 var sdsds = features[i][dfd]; //对应参与统计属性名的属性值 // if (!sdsds) { // continue; // } var pictureMarkerSymbol = new PictureMarkerSymbol("assets/images/" + info + (int + 1) + ".png", 48, 200); var font = new Font("14px", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLD, "黑体"); var attr = { "NAME": namesj[int], "CHANG": sdsds, "UNIT": unit, "UNIT_TYPE": unit_type }; if (unit == "个") { var nu = 0; var nn = 25; var uu = 6; } else { var nu = 2; var nn = 45; var uu = 16; } var height1 = parseFloat(sdsds); if (sdsds >= 10000) { sdsds = sdsds / 10000; sdsds = sdsds.toFixed(nu) + "万"; } else if (sdsds >= 1000) { sdsds = sdsds / 1000; sdsds = sdsds.toFixed(nu) + "千"; } else if (sdsds >= 100) { sdsds = sdsds / 100; sdsds = sdsds.toFixed(nu) + "百"; } else { sdsds = sdsds.toFixed(nu); } var textSymbol = new TextSymbol(sdsds, font, new Color(color)); var heig = 0; if (height1 == 0) { heig = 0; } else if (height1 > (minP * maxInNumbers)) { heig = height1 / maxInNumbers; } else if (height1 > minInNumbers) { heig = (((height1 - minInNumbers) / cha) + minP) * (1 - minP); } else { heig = minP; } heig = heig * 100; pictureMarkerSymbol.height = heig; pictureMarkerSymbol.width = 16; textSymbol.xoffset = ((y * nn) + 10) - 25 * names.length / 2; textSymbol.yoffset = heig + 10; pictureMarkerSymbol.xoffset = ((y * nn) + 10) - 25 * names.length / 2; pictureMarkerSymbol.yoffset = heig / 2; var cPoint = features[i].centerpoint; var gra = new esri.Graphic(cPoint, pictureMarkerSymbol, attr); var gratext = new esri.Graphic(cPoint, textSymbol, attr); graphicsLayer.add(gra); graphicsLayer.add(gratext); y++; } var locationSymbol = new TextSymbol(features[i]["name"], font, new Color(color)); locationSymbol.yoffset = -20; var locationtext = new esri.Graphic(cPoint, locationSymbol); graphicsLayer.add(locationtext); // var textSymbol = new TextSymbol("单位:(" + unit + ")", font, new Color(color)); // textSymbol.xoffset = uu; // textSymbol.yoffset = -16; // var unittext = new esri.Graphic(cPoint, textSymbol); // graphicsLayer.add(unittext); } $("#unit").remove(); $("#projectWidget").append("

统计指标单位:" + unit + "

"); graphicsLayer.refresh(); //刷新图层 } }, //生成等级图 _renderByDot: function (e) { var features = []; var unit_type = $("#zhibiao2 .tucheck").text(); //重新构造传入参数 for (var w in e) { var ary = []; for (var r in e[w]) { ary[r] = {}; ary[r]["name"] = e[w][r].attributes.CITY; ary[r][w + unit_type] = e[w][r]["attributes"][unit_type]; ary[r]["centerpoint"] = e[w][r]["centerpoint"]; ary[r]["geometry"] = e[w][r]["geometry"]; // ary[[e[w][r].attributes.CITY]][w + unit_type] = e[w][r]["attributes"][unit_type]; } features.push(ary); } //遍历构造后的参数,根据行政区合并数组 for (var b = 1; b < features.length; b++) { for (var c in features[0]) { for (var d in features[b]) { if (features[0][c].name == features[b][d].name) { $.extend(features[0][c], features[b][d]); features[b].splice(d, 1); } } } if (features[b].length != 0) { var x = features[0].concat(features[b]); features[0] = x; } } features = features[0]; //获取选中分类 var namesj = []; //参与统计属性名 var names = []; //参与统计属性名 var unit; //统计类型、单位,统计属性名 var name_check = $("#tucs .tucheck"); //选中参与统计的图层
for (var i = 0; i < name_check.length; i++) { //遍历选中参与统计的图层 namesj[i] = $(name_check[i]).find("samp").html(); var sp = $(name_check[i]).find("span"); names[i] = $(sp[0]).html() + $("#zhibiao2 .tucheck").text(); } if ($("#zhibiao2 .tucheck").text() == "面积") { unit = "公顷"; } else { unit = "个"; } if (names.length > 0) { //如果有参与统计的属性 var info; //定义颜色 if (projectObj.chartThemesIndex == 0) { info = "blue"; // var color = Color.fromHex("#0035d6"); } else if (projectObj.chartThemesIndex == 1) { info = "green"; // var color = Color.fromHex("#00cc21"); } else { info = "cyan"; // var color = Color.fromHex("#00b0cf"); } var color = Color.fromHex("#000000"); var opzhi = []; //对应参与统计属性名的属性值 for (var i = 0; i < features.length; i++) { for (var int in names) { var dfd = names[int]; if (features[i][dfd]) { opzhi.push(parseFloat(features[i][dfd])); } } } //计算参与统计的最值 var maxInNumbers = Math.max.apply(Math, opzhi); var minInNumbers = Math.min.apply(Math, opzhi); var cha = maxInNumbers - minInNumbers; var minP = 0.25; //构造柱状图 for (var i = 0; i < features.length; i++) { //遍历传入的统计数据 var y = 0; for (var int = 0; int < names.length; int++) { //遍历参与统计的属性 var dfd = names[int]; //参与统计的属性 var sdsds = features[i][dfd]; //对应参与统计属性名的属性值 // if (!sdsds) { // continue; // } var pictureMarkerSymbol = new PictureMarkerSymbol("assets/images/" + info + "_dot" + ".png", 48, 200); var font = new Font("14px", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLD, "黑体"); var attr = { "NAME": namesj[int], "CHANG": sdsds, "UNIT": unit, "UNIT_TYPE": unit_type }; if (unit == "个") { var nu = 0; var nn = 25; } else { var nu = 2; var nn = 45; } var height1 = parseFloat(sdsds); if (sdsds >= 10000) { sdsds = sdsds / 10000; sdsds = sdsds.toFixed(nu) + "万"; } else if (sdsds >= 1000) { sdsds = sdsds / 1000; sdsds = sdsds.toFixed(nu) + "千"; } else if (sdsds >= 100) { sdsds = sdsds / 100; sdsds = sdsds.toFixed(nu) + "百"; } else { sdsds = sdsds.toFixed(nu); } var textSymbol = new TextSymbol(sdsds + unit, font, new Color(color)); var heig = 0; if (height1 == 0) { heig = 0; } else if (height1 > (minP * maxInNumbers)) { heig = height1 / maxInNumbers; } else if (height1 > minInNumbers) { heig = (((height1 - minInNumbers) / cha) + minP) * (1 - minP); } else { heig = minP; } heig = heig * 100; pictureMarkerSymbol.height = heig; pictureMarkerSymbol.width = heig; textSymbol.xoffset = ((y * nn) + 10) - 25 * names.length / 2; textSymbol.yoffset = heig / 2 + 10; pictureMarkerSymbol.xoffset = ((y * nn) + 10) - 25 * names.length / 2; // pictureMarkerSymbol.yoffset = heig / 2; var cPoint = features[i].centerpoint; var gra = new esri.Graphic(cPoint, pictureMarkerSymbol, attr); var gratext = new esri.Graphic(cPoint, textSymbol, attr); var locationSymbol = new TextSymbol(features[i]["name"], font, new Color(color)); locationSymbol.yoffset = -1 * (heig / 2 + 15); var locationtext = new esri.Graphic(cPoint, locationSymbol); graphicsLayer.add(locationtext); graphicsLayer.add(gra); graphicsLayer.add(gratext); y++; } } graphicsLayer.refresh(); //刷新图层 } }, //生成饼状图 _render: function (e) { var features = []; var unit_type = $("#zhibiao2 .tucheck").text(); //重新构造传入参数 for (var w in e) { var ary = []; for (var r in e[w]) { ary[r] = {}; ary[r]["name"] = e[w][r].attributes.CITY; ary[r][w + unit_type] = e[w][r]["attributes"][unit_type]; ary[r]["centerpoint"] = e[w][r]["centerpoint"]; ary[r]["geometry"] = e[w][r]["geometry"]; } features.push(ary); } //遍历构造后的参数,根据行政区合并数组 for (var b = 1; b < features.length; b++) { for (var c in features[0]) { for (var d in features[b]) { if (features[0][c].name == features[b][d].name) { $.extend(features[0][c], features[b][d]); features[b].splice(d, 1); } } } if (features[b].length != 0) { var x = features[0].concat(features[b]); features[0] = x; } } features = features[0]; // console.log(features); for (var i in features) { var graphic = new Graphic(features[i].geometry); var attri = features[i]; delete attri.geometry; delete attri.centerpoint; graphic.setAttributes(attri); projectObj._chartLayer.add(graphic); } } }); return Widget; });