var gis = gis || {}; gis.edit = function() { }; //uflldLayerMap={"GK_BASIC_JSJY_GK_GQ":gqvectorLayer,"GK_BASIC_JSJY_JYR":jyrvectorLayer,"GK_BASIC_JSJY_JYR_MT":mtvectorLayer,"GK_BASIC_JSJY_JYR_BW":bwvectorLayer,"GK_BASIC_JSJY_GK_ZYQ":zyqvectorLayer}; var editmap={gq:"GK_BASIC_JSJY_GK_GQ",jyr:"GK_BASIC_JSJY_JYR",mt:"GK_BASIC_JSJY_JYR_MT",bw:"GK_BASIC_JSJY_JYR_BW",zyq:"GK_BASIC_JSJY_GK_ZYQ"}; gis.edit.init = function() { nowModifyFeature=null; if(modifyvectorLayer){ modifyvectorLayer.removeAllFeatures(); } if(locationLayer){ locationLayer.removeAllFeatures(); } if(parameterMap){ //http://localhost:8080/znjg/editgis/gisiframe.html?model=gis&treeType=ty&editType=gq&id=32100113 //{model: "gis", treeType: "ty", editType: "gq", id: "32100113"} if(!gis.script.isBlank(parameterMap.editType)&&gis.script.isNum(parameterMap.id)){ var type=editmap[parameterMap.editType]; if(!gis.script.isBlank(type)){ var tlayer=uflldLayerMap[type]; if(tlayer){ tlayer.removeAllFeatures(); } if(dataServices){ for(var n in dataServices){ var data=gisConfigBean.dataconfig[n]; if(data.gisLayerinfoKey&&data.gisLayerinfoKey==type){ data=jQuery.extend(true, {}, data); if(data.Model&&data.Model[gis.script.modelid]){ var model=data.Model[gis.script.modelid]; data.datasetNames=data.datasetNames.split(","); data.fields=data.fields.split(","); data.cachedata=model.cachedata||data.cachedata; data.zoom=model.zoom||data.zoom; data.processCompleted=model.processCompleted; data.onSelectOpenPopkey=model.onSelectOpenPopkey; data.treelocationHighlight=model.treelocationHighlight||"false"; data.modelObj=model; data.url=data.url||defdataUrl; data.attributeFilter=data.gisLayerinfoAttrKey+"="+parameterMap.id; //console.log(data); gis.edit.loadServicetreelocation(data,parameterMap); } break; } } } } } } }; /* * 根据空间数据信息定位 */ gis.edit.loadServicetreelocation = function(o,objdata){ var featureParam = new SuperMap.REST.FilterParameter({ //name: o.name, fields:o.fields, attributeFilter:o.attributeFilter }); var featuresBySQLParams=new SuperMap.REST.GetFeaturesBySQLParameters({ //toIndex:65536, toIndex:-1, queryParameter:featureParam, datasetNames:o.datasetNames }); var featuresBySQLService = new SuperMap.REST.GetFeaturesBySQLService(o.url, { eventListeners: { "processCompleted":function(e){ var result=e.result; //console.log('result>>',result); var features=result.features; if(features&&features.length){ var feature = features[0]; var centerLonLat = feature.geometry.getBounds().getCenterLonLat(); if(modifyvectorLayer){ try{ gis.script.clearAllDeactivate(); nowModifyFeature=feature.clone(); nowModifyFeature.attributes=nowModifyFeature.attributes||{} nowModifyFeature.attributes.gisEditLayerinfoKey=o.gisLayerinfoKey; nowModifyFeature.attributes.featureidval=feature.fid; nowModifyFeature.attributes.editinfoobj={lon:centerLonLat.lon,lat:centerLonLat.lat,zoom:o.zoom||6}; //console.log("1.nowModifyFeature.attributes.editinfoobj",nowModifyFeature.attributes.editinfoobj); modifyvectorLayer.removeAllFeatures(); modifyvectorLayer.addFeatures(nowModifyFeature); //console.log('o>>',o); }catch(e){ } } if(locationLayer){ var nowlocationFeature=feature.clone(); locationLayer.removeAllFeatures(); if(o.treelocationHighlight&&o.treelocationHighlight=="true"){ var fillColor="#a4a5a7";//"#ffff00" var fillOpacity=0.5; nowlocationFeature.style = { fill:true, stroke:true, strokeColor: "#ffff00", strokeWidth: 3, //pointerEvents: "visiblePainted", //fillColor: "#a4a5a7", strokeDashstyle:"solid", fillColor: fillColor, fillOpacity: fillOpacity }; //bwvectorLayer.addFeatures(feature); locationLayer.addFeatures(nowlocationFeature); try{ labelLayer.removeAllFeatures(); if(!o.gisLayerinfoKey||o.gisLayerinfoKey!="GK_BASIC_JSJY_JYR"){ if(o.labelfield&&feature.attributes[o.labelfield]){ var geoText = new SuperMap.Geometry.GeoText(centerLonLat.lon, centerLonLat.lat,feature.attributes[o.labelfield]); var geotextFeature = new SuperMap.Feature.Vector(geoText); labelLayer.addFeatures([geotextFeature]); } } }catch(e){ } } } if(feature.attributes){ feature.attributes.onSelectOpenPopkey=o.onSelectOpenPopkey; feature.attributes.gisLayerinfoAttr=feature.attributes[o.gisLayerinfoAttrKey]; feature.attributes.infokey=o.gisLayerinfoKey+"_"+feature.attributes.gisLayerinfoAttr; feature.attributes.gisEditLayerinfoKey=o.gisLayerinfoKey; feature.attributes.featureidval=feature.fid; feature.attributes.labelfieldid=o.labelfield; if(o.processCompleted&&gis.script[o.processCompleted]){ gis.script[o.processCompleted](feature,o); } } map.setCenter(new SuperMap.LonLat(centerLonLat.lon, centerLonLat.lat),o.zoom||6); } }, "processFailed": gis.script.sqlProcessFailed } }); featuresBySQLService.processAsync(featuresBySQLParams); //featuresBySQLService.processAsync(featuresBySQLParams); } gis.edit.addFeatureCompleted = function(drawGeometryArgs){ $.confirm({ title : '确认框', content : '确认保存编辑区域吗', confirm : function() { if(drawGeometryArgs){ gis.edit.addFeatureCompletedService(drawGeometryArgs); } }, cancel: function(){ modifyvectorLayer.removeAllFeatures(); } }); } gis.edit.addFeatureCompletedService = function(drawGeometryArgs){ gis.edit.progressdiv('show'); drawPolygon.deactivate(); if(!gis.script.isBlank(parameterMap.editType)&&gis.script.isNum(parameterMap.id)){ //console.log(parameterMap); if(dataServices){ gis.script.consolelog('dataServices',dataServices); for(var n in dataServices){ var data=gisConfigBean.dataconfig[n]; var type=editmap[parameterMap.editType]; if(data&&type==data.gisLayerinfoKey){ data=jQuery.extend(true, {}, data); data.datasetNames=data.datasetNames.split(","); data.fields=data.fields.split(","); data.url=data.url||defdataUrl; //console.log(data); var geometry = drawGeometryArgs.feature.geometry; var feature = new SuperMap.Feature.Vector(); feature.geometry = drawGeometryArgs.feature.geometry; //feature.style = style; modifyvectorLayer.addFeatures(feature); if(nowModifyFeature){ gis.script.editgisFeatureService(nowModifyFeature,feature); return; } if(data.gisLayerinfoAttrKey){ var features = { fieldNames:[data.gisLayerinfoAttrKey], fieldValues:[parameterMap.id], geometry:geometry }; var editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({ features: [features], editType: SuperMap.REST.EditType.ADD, returnContent:false }); if(data.url&&data.datasetNames&&data.datasetNames.length==1){ var dnames=data.datasetNames[0].split(":"); if(dnames&&dnames.length==2){ //console.log("dnames",dnames); var url=data.url+"/datasources/"+dnames[0]+"/datasets/"+dnames[1]; var editFeatureService = new SuperMap.REST.EditFeaturesService(url, { eventListeners: { "processCompleted": function(editFeaturesEventArgs) { gis.script.updateFeaturesProcessCompleted(editFeaturesEventArgs,feature); }, "processFailed": gis.script.sqlProcessFailed } }); editFeatureService.processAsync(editFeatureParameter); } } } break; } } } } } gis.edit.delFeatureCompleted = function(feature){ $.confirm({ title : '确认框', content : '确认删除区域吗', confirm : function() { if(event){ gis.edit.delFeatureCompletedService(feature); } }, cancel: function(){ modifyvectorLayer.removeAllFeatures(); } }); } gis.edit.delFeatureCompletedService = function(feature){ if(feature){ //console.log(feature); if(feature.attributes&&!gis.script.isBlank(feature.attributes.featureidval)){ if(dataServices){ gis.script.consolelog('dataServices',dataServices); for(var n in dataServices){ var data=gisConfigBean.dataconfig[n]; var type=editmap[parameterMap.editType]; if(data&&type==data.gisLayerinfoKey){ data=jQuery.extend(true, {}, data); data.datasetNames=data.datasetNames.split(","); data.fields=data.fields.split(","); data.url=data.url||defdataUrl; var editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({ IDs: [feature.attributes.featureidval], editType: SuperMap.REST.EditType.DELETE }); if(data.url&&data.datasetNames&&data.datasetNames.length==1){ var dnames=data.datasetNames[0].split(":"); if(dnames&&dnames.length==2){ //console.log("dnames",dnames); var url=data.url+"/datasources/"+dnames[0]+"/datasets/"+dnames[1]; var editFeatureService = new SuperMap.REST.EditFeaturesService(url, { eventListeners: { "processCompleted": function(editFeaturesEventArgs) { gis.script.updateFeaturesProcessCompleted(editFeaturesEventArgs,null); }, "processFailed": gis.script.sqlProcessFailed } }); //console.log(editFeatureParameter); editFeatureService.processAsync(editFeatureParameter); } } break; } } } } } } gis.edit.syncDataLayer = function(){ if(!gis.script.isBlank(parameterMap.editType)&&gis.script.isNum(parameterMap.id)){ var type=editmap[parameterMap.editType]; if(!gis.script.isBlank(type)){ if(dataServices){ for(var n in dataServices){ var data=gisConfigBean.dataconfig[n]; if(data.gisLayerinfoKey&&data.gisLayerinfoKey==type){ data=jQuery.extend(true, {}, data); if(data.Model&&data.Model[gis.script.modelid]){ var model=data.Model[gis.script.modelid]; data.datasetNames=data.datasetNames.split(","); data.fields=data.fields.split(","); data.cachedata=model.cachedata||data.cachedata; data.zoom=model.zoom||data.zoom; data.processCompleted=model.processCompleted; data.onSelectOpenPopkey=model.onSelectOpenPopkey; data.treelocationHighlight=model.treelocationHighlight||"false"; data.modelObj=model; data.url=data.url||defdataUrl; data.attributeFilter=data.gisLayerinfoAttrKey+"="+parameterMap.id; gis.edit.syncDataLayerSourcesService(data,parameterMap); } break; } } } } } } gis.edit.syncDataLayerTargetsService = function(data,sourcesfeature,objdata){ if(!data||!data.syncDatasetNames){ return; } var o=jQuery.extend(true, {}, data); o.datasetNames=data.syncDatasetNames.split(","); var featureParam = new SuperMap.REST.FilterParameter({ //name: o.name, fields:o.fields, attributeFilter:o.attributeFilter }); var featuresBySQLParams=new SuperMap.REST.GetFeaturesBySQLParameters({ //toIndex:65536, toIndex:-1, queryParameter:featureParam, datasetNames:o.datasetNames }); var featuresBySQLService = new SuperMap.REST.GetFeaturesBySQLService(o.url, { eventListeners: { "processCompleted":function(e){ gis.edit.progressdiv('show'); var editFeatureParameter; var result=e.result; //console.log('result>>',result); var features=result.features; var targetsfeature; if(features&&features.length){ targetsfeature = features[0]; } //console.log('sourcesfeature>>',sourcesfeature); //console.log('targetsfeature>>',targetsfeature); if(!sourcesfeature&&!targetsfeature){ //目标源和数据源多不存在地物,无需操作,提示同步完成 gis.script.toastmessage({text:'同步完成'}); return; }else if(!sourcesfeature){ //目标源存在地物,可是数据源不存在时,进行删除操作 if(!gis.script.isBlank(targetsfeature.fid)){ editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({ IDs: [targetsfeature.fid], editType: SuperMap.REST.EditType.DELETE }); //console.log('editFeatureParameter>>',editFeatureParameter); } }else if(!targetsfeature){ //目标源存在地物,可是数据源存在时,进行新增操作 if(sourcesfeature&&sourcesfeature.geometry){ var addfeatures = { fieldNames:[data.gisLayerinfoAttrKey], fieldValues:[parameterMap.id], geometry:sourcesfeature.geometry }; //console.log('addfeatures>>',addfeatures); editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({ features: [addfeatures], editType: SuperMap.REST.EditType.ADD, returnContent:false }); } }else{ //目标源和数据源同时存在时,进行更新操作 if(o.fields&&o.fields.length){ var attributes = feature.attributes; var attrNames = data.fields; var attrValues = []; for(var i=0;i>',updatefeatures); } } } if(editFeatureParameter &&o.url&&o.datasetNames&&o.datasetNames.length==1){ var dnames=o.datasetNames[0].split(":"); if(dnames&&dnames.length==2){ //console.log("dnames",dnames); var url=o.url+"/datasources/"+dnames[0]+"/datasets/"+dnames[1]; var editFeatureService = new SuperMap.REST.EditFeaturesService(url, { eventListeners: { "processCompleted": function(editFeaturesEventArgs) { gis.edit.syncFeaturesProcessCompleted(editFeaturesEventArgs,null); }, "processFailed": gis.script.sqlProcessFailed } }); //console.log(editFeatureParameter); editFeatureService.processAsync(editFeatureParameter); } }else{ gis.edit.progressdiv('none'); } }, "processFailed": gis.script.sqlProcessFailed } }); featuresBySQLService.processAsync(featuresBySQLParams); } gis.edit.syncDataLayerSourcesService = function(data,objdata){ var o=jQuery.extend(true, {}, data); //测试时开放 //o.attributeFilter=o.gisLayerinfoAttrKey+"=92100111"; var featureParam = new SuperMap.REST.FilterParameter({ //name: o.name, fields:o.fields, attributeFilter:o.attributeFilter }); var featuresBySQLParams=new SuperMap.REST.GetFeaturesBySQLParameters({ //toIndex:65536, toIndex:-1, queryParameter:featureParam, datasetNames:o.datasetNames }); var featuresBySQLService = new SuperMap.REST.GetFeaturesBySQLService(o.url, { eventListeners: { "processCompleted":function(e){ var result=e.result; //console.log('result>>',result); var features=result.features; var sourcesfeature; if(features&&features.length){ sourcesfeature = features[0]; } gis.edit.syncDataLayerTargetsService(data,sourcesfeature,objdata); }, "processFailed": gis.script.sqlProcessFailed } }); featuresBySQLService.processAsync(featuresBySQLParams); } gis.edit.syncFeaturesProcessCompleted = function(editFeaturesEventArgs){ gis.edit.progressdiv('none'); if(editFeaturesEventArgs&&editFeaturesEventArgs.result.resourceInfo.succeed) { //alert("更新地物成功"); gis.script.toastmessage({text:'同步地物成功。',type:'success'}); }else{ gis.script.toastmessage({text:'同步地物失败。',type:'warning'}); } gis.edit.syncgisStatus({syncsucceed:editFeaturesEventArgs.result.resourceInfo.succeed}); } gis.edit.syncgisStatus=function(obj){ if(obj){ if(!gis.script.isBlank(parameterMap.editType)&&gis.script.isNum(parameterMap.id)){ var type=editmap[parameterMap.editType]; if(!gis.script.isBlank(type)){ obj.tableName=type; obj.zyid=parameterMap.id; //var objdata=JSON.stringify(jQuery.extend(true, parameterMap, obj)); var objdata=JSON.stringify(obj); gis.script.jsonAjax({url:contextPath+"/editgis/syncgisStatus.html",contentType:'application/json;charset=utf-8',async:true,data:objdata}, function(data){ }); } } } } gis.edit.progressdiv = function(v){ var progressdiv=document.getElementById("progressdiv"); if(progressdiv&&v){ if(v=='show'){ progressdiv.style.display=""; }else{ progressdiv.style.display="none"; } } } $(document).ready(function() { });