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 += "<div class='tuc_check' id='" + nodeobj.tId + "a'>";
|
str += "<samp>" + nodeobj.name + "</samp>";
|
str += "<span style='display:none;'>" + nodes[index].name + "</span>";
|
str += "</div>";
|
$("#tuc").append(str);
|
str = "";
|
str += "<div class='tuc_checks' id='" + nodeobj.tId + "s'>";
|
str += "<samp>" + nodeobj.name + "</samp>";
|
str += "<span style='display:none;'>" + nodes[index].name + "</span>";
|
// if (nodes[index].unit != undefined) {
|
// str += "<span style='display:none;'>" + nodes[index].unit_type + "," + nodes[index].unit + "</span>";
|
// }
|
str += "</div>";
|
$("#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"); //选中参与统计的图层<div>
|
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"); //选中参与统计的图层<div>
|
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("<p id = 'unit' style = 'margin:15px 0 0 0; text-align:center; font-size:16px;'>统计指标单位:" + unit + "</p>");
|
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"); //选中参与统计的图层<div>
|
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;
|
});
|