define([ "dojo", "dojo/_base/declare", "dojo/_base/lang", "base/BaseWidget", "dojo/text!widgets/importAndexport/template.html", "widgets/index/config", "base/AppEvent", "base/ConfigData", "dojo/dom", "dojo/dom-construct", "dojo/dom-attr", "dojo/dom-style", "dojo/on", "dojo/request/iframe", "jslibs/geojsonUtil", "esri/layers/FeatureLayer", "controls/tab/TabControl", "esri/dijit/SymbolStyler", "esri/styles/basic", "dojo/_base/array", "esri/tasks/PrintTemplate", "esri/tasks/PrintTask", "esri/tasks/PrintParameters", "esri/symbols/PictureMarkerSymbol", "esri/geometry/Point", "esri/geometry/webMercatorUtils", "esri/layers/GraphicsLayer", "esri/geometry/Polyline", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/Color", "esri/geometry/Polygon", "esri/symbols/SimpleMarkerSymbol", "esri/InfoTemplate", "esri/SpatialReference", "esri/tasks/ProjectParameters", "esri/graphicsUtils", "dojo/domReady!" ], function( dojo, declare, lang, BaseWidget, template, config, AppEvent, ConfigData, dom, domConstruct, domAttr, domStyle, on, iframe, GeoJsonUtil, FeatureLayer, TabControl, SymbolStyler, basic, arrayUtils, PrintTemplate, PrintTask, PrintParameters, PictureMarkerSymbol, Point, webMercatorUtils, GraphicsLayer, Polyline, SimpleLineSymbol, SimpleFillSymbol, Color, Polygon, SimpleMarkerSymbol, InfoTemplate, SpatialReference, ProjectParameters, graphicsUtils ) { var Widget = declare([BaseWidget], { widgetName: "ImportAndExportWidget", label: "导入导出", templateString: template, _config: null, _map: null, _zTree:null, _selectLayer:null, file_id:null, shape_id:null, graphicLayer:null, constructor: function(options, srcRefNode) { this._map = options.map; }, postCreate: function() {}, startup: function() { this.inherited(arguments); var thisObj=this; $('#adddata').fadeIn(); graphicLayer=new GraphicsLayer(); thisObj._map.addLayer(graphicLayer); on(dom.byId("okBtn"), "click", lang.hitch(this, function(evt) { var sds=$("#file_imp li"); for ( var up = 0; up < sds.length; up++) { if($(sds[up]).hasClass("check")){ if(up==1 || up==2){ this.submitClick(); }else if(up==3){ this.submitClick_kml(); } else{ this.submitClick_shp(); } } } $('#adddata').fadeOut(); })); $('.adddataHide').click(function(evt){ $('#adddata').fadeOut(); }); $('#file_imp li').click(function(evt){ if(this.id=="txt_imp" || this.id=="excel_imp"){ $("#dis_imp").css({"display":"block"}); $(".ups").css({"display":"none"}); $(".upload").css({"display":"block"}); }else if(this.id=="kml_imp"){ $("#dis_imp").css({"display":"none"}); $(".ups").css({"display":"none"}); $("#upload_"+this.id).css({"display":"block"}); }else if(this.id=="shp_imp"){ $("#dis_imp").css({"display":"none"}); $(".ups").css({"display":"none"}); $("#upload_"+this.id).css({"display":"block"}); } else{ return; } $("#file_imp li").removeClass("check"); $("#"+this.id).addClass("check"); }); }, submitClick:function (){ var thisObj = this; /*var pictureSymbol = new PictureMarkerSymbol("assets/images/location.png", 25, 25);*/ graphicLayer.clear(); var sms = new SimpleMarkerSymbol(); sms.setColor(new Color([255,0,0])); sms.setOutline(null); sms.setSize("10"); $.ajax({ url:'http://localhost:8081/ZHSD/mapUpload/analysis.do', type:'post', data:new FormData($( ".upload" )[0]), // IE10以上版本支持 processData: false, contentType: false, dataType:'json', success:function(data){ graphicLayer.clear(); if(data.error){ alert(data.error); } else { graphicLayer.clear(); switch (data.type) { case "dian": { for ( var dd = 0; dd < data.data.length; dd++) { var dian_data=data.data[dd]; for ( var i=0;i"+dian_data[i].x+""; content+= "
"+"纬度"+":"+dian_data[i].y+"
"; content+= "
"+"名称"+":"+dian_data[i].name+"
"; content+= "
"+"备注"+":"+dian_data[i].remark+"
"; content+=""; graphic = new esri.Graphic(poin,sms,content); var infoTemplate = new InfoTemplate(); infoTemplate.setTitle(dian_data[i].name); infoTemplate.setContent(content); graphic.setInfoTemplate(infoTemplate); graphicLayer.add(graphic); thisObj._map.centerAndZoom(poin, 6); } } } break; case "xian": { var xian_arr=[]; var name; var mai=data.data; if(mai.length>1){ for ( var dd = 0; dd < data.data.length; dd++) { var polyline = new Polyline((new SpatialReference({wkid:4490}))); var xian_data=data.data[dd]; if(xian_data.length>1){ for ( var i = 0; i < xian_data.length; i++) { xian_arr.push([xian_data[i].x,xian_data[i].y]); name=xian_data[i].name; } polyline.addPath(xian_arr); var sls = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([255,0,0 ]),3); graphic = new esri.Graphic(polyline,sls,content); graphicLayer.add(graphic); thisObj._map.setExtent(graphic._extent.expand(5)); xian_arr=[]; } else{alert("名称为'"+name+"'的坐标点个数少于2,不能构成线");} } }else{ var xian_data=data.data[0]; for ( var i = 0; i < xian_data.length; i++) { var polyline = new Polyline((new SpatialReference({wkid:4490}))); if (i != xian_data.length - 1) { if (xian_data[i].no == xian_data[i+1].no) { xian_arr.push([xian_data[i].x,xian_data[i].y]); } else { xian_arr.push([xian_data[i].x,xian_data[i].y]); name=xian_data[i].name; if(xian_arr.length>2||xian_arr.length==2){ polyline.addPath(xian_arr); var sls = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([255,0,0 ]),3); var content= ""; content+="
"; content+= "
"+"名称"+":"+xian_data[i].name+"
"; content+= "
"+"备注"+":"+xian_data[i].remark+"
"; content+="
"; graphic = new esri.Graphic(polyline,sls,content); var infoTemplate = new InfoTemplate(); infoTemplate.setTitle(xian_data[i].name); infoTemplate.setContent(content); graphic.setInfoTemplate(infoTemplate); graphicLayer.add(graphic); thisObj._map.setExtent(graphic._extent.expand(5)); xian_arr=[]; } else{alert("名称为'"+name+"'的坐标点个数少于2,不能构成线");} } } else{ xian_arr.push([xian_data[i].x,xian_data[i].y]); name=xian_data[i].name; if(xian_arr.length>2||xian_arr.length==2){ polyline.addPath(xian_arr); var sls = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([255,0,0 ]),3); var content= ""; content+="
"; content+= "
"+"名称"+":"+xian_data[i].name+"
"; content+= "
"+"备注"+":"+xian_data[i].remark+"
"; content+="
"; graphic = new esri.Graphic(polyline,sls,content); var infoTemplate = new InfoTemplate(); infoTemplate.setTitle(xian_data[i].name); infoTemplate.setContent(content); graphic.setInfoTemplate(infoTemplate); graphicLayer.add(graphic); thisObj._map.setExtent(graphic._extent.expand(5)); } else{alert("名称为'"+name+"'的坐标点个数少于2,不能构成线");} } } } } break; case "mian": { var mian_arr=[]; var name; var mai=data.data; if(mai.length>1){ for ( var dd = 0; dd < data.data.length; dd++) { var polygon = new Polygon(new SpatialReference({wkid:4490})); var mian_data=data.data[dd]; mian_arr=[]; if(mian_data.length>3){ for ( var i = 0; i < mian_data.length; i++) { mian_arr.push([mian_data[i].x,mian_data[i].y]); name=mian_data[i].name; } polygon.addRing(mian_arr); var sfs = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,0,0]), 2),new Color([255,255,0,0.25]) ); graphic = new esri.Graphic(polygon,sfs,content); graphicLayer.add(graphic); thisObj._map.setExtent(graphic._extent.expand(5)); }else{ alert("名称为'"+name+"'的坐标点个数少于3,不能构成面"); } } }else{ var mian_data=data.data[0]; for ( var i = 0; i < mian_data.length; i++) { var polygon = new Polygon(new SpatialReference({wkid:4490})); if (i != mian_data.length - 1) { if (mian_data[i].no == mian_data[i+1].no) { mian_arr.push([mian_data[i].x,mian_data[i].y]); } else { mian_arr.push([mian_data[i].x,mian_data[i].y]); mian_arr.push(mian_arr[0]); name=mian_data[i].name; if(mian_arr.length>4||mian_arr.length==4){ polygon.addRing(mian_arr); var sfs = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,0,0]), 2),new Color([255,255,0,0.25]) ); var content= ""; content+="
"; content+= "
"+"名称"+":"+mian_data[i].name+"
"; content+= "
"+"备注"+":"+mian_data[i].remark+"
"; content+="
"; graphic = new esri.Graphic(polygon,sfs,content); var infoTemplate = new InfoTemplate(); infoTemplate.setTitle(mian_data[i].name); infoTemplate.setContent(content); graphic.setInfoTemplate(infoTemplate); graphicLayer.add(graphic); thisObj._map.setExtent(graphic._extent.expand(5)); mian_arr=[]; } else{alert("名称为'"+name+"'的坐标点个数少于3,不能构成面");} } } else{ mian_arr.push([mian_data[i].x,mian_data[i].y]); mian_arr.push(mian_arr[0]); name=mian_data[i].name; if(mian_arr.length>4||mian_arr.length==4){ polygon.addRing(mian_arr); var sfs = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,0,0]), 2),new Color([255,255,0,0.25]) ); var content= ""; content+="
"; content+= "
"+"名称"+":"+mian_data[i].name+"
"; content+= "
"+"备注"+":"+mian_data[i].remark+"
"; content+="
"; graphic = new esri.Graphic(polygon,sfs,content); var infoTemplate = new InfoTemplate(); infoTemplate.setTitle(mian_data[i].name); infoTemplate.setContent(content); graphic.setInfoTemplate(infoTemplate); graphic.name="mian"; graphicLayer.add(graphic); thisObj._map.setExtent(graphic._extent.expand(5)); } else{alert("名称为'"+name+"'的坐标点个数少于3,不能构成面");} } } } //thisObj._map.setExtent(graphicLayer._extent.expand(5)); } break; } /*thisObj._map.setExtent(graphic._extent.expand(1.5)); */ /*graphicLayer.name="sss"; graphicLayer.id="sss";*/ /*graphicLayer.className="sss"; graphicLayer.layerId="sss"; graphicLayer.Type="sss";*/ //thisObj._map.setExtent(new Extent(graphicLayer.initialExtent, new SpatialReference({wkid:4490}))); } },error:function(e){ alert("服务器繁忙!"); } }); AppEvent.addAppEventListener(AppEvent.APPLICATION_CLEAR, lang.hitch(this, function(evt) { thisObj._map.removeLayer(graphicLayer); })); return false; }, submitClick_kml:function (){ var thisObj = this; var layerDefinition = { "geometryType": "esriGeometryPolygon", "fields": [{ "name": "BUFF_DIST", "type": "esriFieldTypeInteger", "alias": "Buffer Distance" }]}; var sms = new SimpleMarkerSymbol(); sms.setColor(new Color([255,0,0])); sms.setOutline(null); sms.setSize("10"); graphicLayer.clear(); $.ajax({ url:'http://localhost:8081/ZHSD/mapUpload/upkml.do', type:'post', data:new FormData($( "#upload_kml_imp" )[0]), // IE10以上版本支持 processData: false, contentType: false, dataType:'json', success:function(data){ graphicLayer.clear(); if(data.error){ alert(data.error); } else { graphicLayer.clear(); var Model = data[0].readInputModels; var Line= data[0].readInputModelLines; var Mian= data[0].readInputModelMians; /*============点===================*/ if(Model.length>0){ var points = []; var attributes = []; for ( var i = 0; i < Model.length; i++) { var lat=Model[i].longitude; var long=Model[i].latitude; var poin = new Point(parseFloat(lat),parseFloat(long),new SpatialReference({wkid:parseInt(4490)})); points[i] = poin; attributes[i] = {name:Model[i].name,remark:Model[i].remark}; } var PrjParams = new ProjectParameters(); PrjParams.geometries = points; PrjParams.outSR = new SpatialReference({wkid: 4490}); geometryService.project(PrjParams, function (outputpoint) { for ( var int = 0; int < outputpoint.length; int++) { var content= ""; content+="
"; content+= "
"+"经度"+":"+outputpoint[int].x+"
"; content+= "
"+"纬度"+":"+outputpoint[int].y+"
"; content+= "
"+"名称"+":"+attributes[int].name+"
"; content+= "
"+"备注"+":"+attributes[int].remark+"
"; content+="
"; var graphic = new esri.Graphic(outputpoint[int],sms,content); var infoTemplate = new InfoTemplate(); infoTemplate.setTitle(attributes[int].name); infoTemplate.setContent(content); graphic.setInfoTemplate(infoTemplate); graphicLayer.add(graphic); //thisObj._map.centerAndZoom(outputpoint[int], 6); } }); } /*============结束===================*/ /*============线===================*/ if(Line.length>0){ var xian_arr=[]; var name; for ( var i = 0; i < Line.length; i++) { var polyline = new Polyline((new SpatialReference({wkid:4490}))); var xian_data=Line[i].readInputModels; if(xian_data.length>1){ for ( var yy = 0; yy < xian_data.length; yy++) { xian_arr.push([xian_data[yy].longitude,xian_data[yy].latitude]); name=xian_data[yy].name; } polyline.addPath(xian_arr); var sls = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([255,0,0 ]),3); var graphic = new esri.Graphic(polyline,sls,""); graphicLayer.add(graphic); thisObj._map.setExtent(graphic._extent.expand(5)); xian_arr=[]; }else{ alert("名称为'"+name+"'的坐标点个数少于2,不能构成线"); } } } /*============结束===================*/ /*============面===================*/ if(Mian.length>0){ var mian_arr=[]; var name; for ( var dd = 0; dd < Mian.length; dd++) { var polygon = new Polygon(new SpatialReference({wkid:4490})); var mian_data=Mian[dd].readInputModels; mian_arr=[]; if(mian_data.length>3){ for ( var i = 0; i < mian_data.length; i++) { mian_arr.push([mian_data[i].longitude,mian_data[i].latitude]); name=mian_data[i].name; } polygon.addRing(mian_arr); var sfs = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,0,0]), 2),new Color([255,255,0,0.25]) ); var graphic = new esri.Graphic(polygon,sfs,content); graphicLayer.add(graphic); thisObj._map.setExtent(graphic._extent.expand(5)); }else{ alert("名称为'"+name+"'的坐标点个数少于3,不能构成面"); } } } /*========结束========*/ } },error:function(e){ alert("服务器繁忙!"); } }); AppEvent.addAppEventListener(AppEvent.APPLICATION_CLEAR, lang.hitch(this, function(evt) { thisObj._map.removeLayer(graphicLayer); })); return false; }, submitClick_shp:function(){ var thisObj = this; $.ajax({ url:'http://localhost:8081/ZHSD/servlet/readShp', type:'post', data:new FormData($( "#upload_shp_imp" )[0]), // IE10以上版本支持 processData: false, contentType: false, dataType:'json', success:function(data){ debugger; var jsonf = new GeoJsonUtil(); var json = jsonf.geojsonToArcGIS(data); var features = []; var geo; var symbol; var shpGraphicLayer=new GraphicsLayer(); var template = new InfoTemplate(); template.setTitle("${NAME}"); template.setContent(thisObj._getGraphicContent); shpGraphicLayer.setInfoTemplate(template); for(var i=0;i