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.length;i++) {
|
var lat=dian_data[i].x;
|
var long=dian_data[i].y;
|
var poin = new Point(parseFloat(lat),parseFloat(long),new SpatialReference({wkid:4490}));
|
var point = new Point(parseFloat(lat),parseFloat(long),new SpatialReference({wkid:4490}));
|
var content= "";
|
content+="<div class='con'>";
|
content+= "<div>"+"经度"+":<b>"+dian_data[i].x+"</b></div>";
|
content+= "<div>"+"纬度"+":<b>"+dian_data[i].y+"</b></div>";
|
content+= "<div>"+"名称"+":<b>"+dian_data[i].name+"</b></div>";
|
content+= "<div>"+"备注"+":<b>"+dian_data[i].remark+"</b></div>";
|
content+="</div>";
|
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+="<div class='con'>";
|
content+= "<div>"+"名称"+":<b>"+xian_data[i].name+"</b></div>";
|
content+= "<div>"+"备注"+":<b>"+xian_data[i].remark+"</b></div>";
|
content+="</div>";
|
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+="<div class='con'>";
|
content+= "<div>"+"名称"+":<b>"+xian_data[i].name+"</b></div>";
|
content+= "<div>"+"备注"+":<b>"+xian_data[i].remark+"</b></div>";
|
content+="</div>";
|
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+="<div class='con'>";
|
content+= "<div>"+"名称"+":<b>"+mian_data[i].name+"</b></div>";
|
content+= "<div>"+"备注"+":<b>"+mian_data[i].remark+"</b></div>";
|
content+="</div>";
|
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+="<div class='con'>";
|
content+= "<div>"+"名称"+":<b>"+mian_data[i].name+"</b></div>";
|
content+= "<div>"+"备注"+":<b>"+mian_data[i].remark+"</b></div>";
|
content+="</div>";
|
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+="<div class='con'>";
|
content+= "<div>"+"经度"+":<b>"+outputpoint[int].x+"</b></div>";
|
content+= "<div>"+"纬度"+":<b>"+outputpoint[int].y+"</b></div>";
|
content+= "<div>"+"名称"+":<b>"+attributes[int].name+"</b></div>";
|
content+= "<div>"+"备注"+":<b>"+attributes[int].remark+"</b></div>";
|
content+="</div>";
|
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("<b>${NAME}</b>");
|
template.setContent(thisObj._getGraphicContent);
|
shpGraphicLayer.setInfoTemplate(template);
|
|
for(var i=0;i<json.length;i++){
|
|
switch (json[i].geometry.type) {
|
case "Point":
|
geo=new Point();
|
geo.x=json[i].geometry.x;
|
geo.y=json[i].geometry.y;
|
symbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 10,
|
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 1),
|
new dojo.Color([255, 0, 0]));
|
|
break;
|
case "Polygon":
|
geo=new Polygon();
|
geo.rings=json[i].geometry.rings;
|
symbol= new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
|
new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 3),
|
new dojo.Color([255, 0, 0]));
|
break;
|
case "LineString":
|
var geo=new Polyline();
|
geo.paths=json[i].geometry.paths;
|
symbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 2)
|
break;
|
}
|
|
geo.spatialReference.wkid=json[i].geometry.spatialReference.wkid;
|
|
g=new esri.Graphic(geo,symbol,json[i].attributes);
|
|
shpGraphicLayer.add(g);
|
features.push(g);
|
}
|
|
thisObj._map.addLayer(shpGraphicLayer);
|
/*var getuuid = uuid();
|
console.log(getuuid);
|
var newNode = { id:getuuid,name:data.layername,checked:true};
|
thisObj._zTree.addNodes(null, newNode);
|
|
ConfigData.layers[getuuid] = shpGraphicLayer;*/
|
|
var myFeatureExtent =graphicsUtils.graphicsExtent(features);
|
thisObj._map.setExtent(myFeatureExtent.expand(2));
|
},
|
error:function(e){
|
alert("服务器繁忙!");
|
}
|
});
|
|
}
|
});
|
return Widget;
|
});
|