gis.edit.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. var gis = gis || {};
  2. gis.edit = function() {
  3. };
  4. //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};
  5. 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"};
  6. gis.edit.init = function() {
  7. nowModifyFeature=null;
  8. if(modifyvectorLayer){
  9. modifyvectorLayer.removeAllFeatures();
  10. }
  11. if(locationLayer){
  12. locationLayer.removeAllFeatures();
  13. }
  14. if(parameterMap){
  15. //http://localhost:8080/znjg/editgis/gisiframe.html?model=gis&treeType=ty&editType=gq&id=32100113
  16. //{model: "gis", treeType: "ty", editType: "gq", id: "32100113"}
  17. if(!gis.script.isBlank(parameterMap.editType)&&gis.script.isNum(parameterMap.id)){
  18. var type=editmap[parameterMap.editType];
  19. if(!gis.script.isBlank(type)){
  20. var tlayer=uflldLayerMap[type];
  21. if(tlayer){
  22. tlayer.removeAllFeatures();
  23. }
  24. if(dataServices){
  25. for(var n in dataServices){
  26. var data=gisConfigBean.dataconfig[n];
  27. if(data.gisLayerinfoKey&&data.gisLayerinfoKey==type){
  28. data=jQuery.extend(true, {}, data);
  29. if(data.Model&&data.Model[gis.script.modelid]){
  30. var model=data.Model[gis.script.modelid];
  31. data.datasetNames=data.datasetNames.split(",");
  32. data.fields=data.fields.split(",");
  33. data.cachedata=model.cachedata||data.cachedata;
  34. data.zoom=model.zoom||data.zoom;
  35. data.processCompleted=model.processCompleted;
  36. data.onSelectOpenPopkey=model.onSelectOpenPopkey;
  37. data.treelocationHighlight=model.treelocationHighlight||"false";
  38. data.modelObj=model;
  39. data.url=data.url||defdataUrl;
  40. data.attributeFilter=data.gisLayerinfoAttrKey+"="+parameterMap.id;
  41. //console.log(data);
  42. gis.edit.loadServicetreelocation(data,parameterMap);
  43. }
  44. break;
  45. }
  46. }
  47. }
  48. }
  49. }
  50. }
  51. };
  52. /*
  53. * 根据空间数据信息定位
  54. */
  55. gis.edit.loadServicetreelocation = function(o,objdata){
  56. var featureParam = new SuperMap.REST.FilterParameter({
  57. //name: o.name,
  58. fields:o.fields,
  59. attributeFilter:o.attributeFilter
  60. });
  61. var featuresBySQLParams=new SuperMap.REST.GetFeaturesBySQLParameters({
  62. //toIndex:65536,
  63. toIndex:-1,
  64. queryParameter:featureParam,
  65. datasetNames:o.datasetNames
  66. });
  67. var featuresBySQLService = new SuperMap.REST.GetFeaturesBySQLService(o.url, {
  68. eventListeners: {
  69. "processCompleted":function(e){
  70. var result=e.result;
  71. //console.log('result>>',result);
  72. var features=result.features;
  73. if(features&&features.length){
  74. var feature = features[0];
  75. var centerLonLat = feature.geometry.getBounds().getCenterLonLat();
  76. if(modifyvectorLayer){
  77. try{
  78. gis.script.clearAllDeactivate();
  79. nowModifyFeature=feature.clone();
  80. nowModifyFeature.attributes=nowModifyFeature.attributes||{}
  81. nowModifyFeature.attributes.gisEditLayerinfoKey=o.gisLayerinfoKey;
  82. nowModifyFeature.attributes.featureidval=feature.fid;
  83. nowModifyFeature.attributes.editinfoobj={lon:centerLonLat.lon,lat:centerLonLat.lat,zoom:o.zoom||6};
  84. //console.log("1.nowModifyFeature.attributes.editinfoobj",nowModifyFeature.attributes.editinfoobj);
  85. modifyvectorLayer.removeAllFeatures();
  86. modifyvectorLayer.addFeatures(nowModifyFeature);
  87. //console.log('o>>',o);
  88. }catch(e){
  89. }
  90. }
  91. if(locationLayer){
  92. var nowlocationFeature=feature.clone();
  93. locationLayer.removeAllFeatures();
  94. if(o.treelocationHighlight&&o.treelocationHighlight=="true"){
  95. var fillColor="#a4a5a7";//"#ffff00"
  96. var fillOpacity=0.5;
  97. nowlocationFeature.style = {
  98. fill:true,
  99. stroke:true,
  100. strokeColor: "#ffff00",
  101. strokeWidth: 3,
  102. //pointerEvents: "visiblePainted",
  103. //fillColor: "#a4a5a7",
  104. strokeDashstyle:"solid",
  105. fillColor: fillColor,
  106. fillOpacity: fillOpacity
  107. };
  108. //bwvectorLayer.addFeatures(feature);
  109. locationLayer.addFeatures(nowlocationFeature);
  110. try{
  111. labelLayer.removeAllFeatures();
  112. if(!o.gisLayerinfoKey||o.gisLayerinfoKey!="GK_BASIC_JSJY_JYR"){
  113. if(o.labelfield&&feature.attributes[o.labelfield]){
  114. var geoText = new SuperMap.Geometry.GeoText(centerLonLat.lon, centerLonLat.lat,feature.attributes[o.labelfield]);
  115. var geotextFeature = new SuperMap.Feature.Vector(geoText);
  116. labelLayer.addFeatures([geotextFeature]);
  117. }
  118. }
  119. }catch(e){
  120. }
  121. }
  122. }
  123. if(feature.attributes){
  124. feature.attributes.onSelectOpenPopkey=o.onSelectOpenPopkey;
  125. feature.attributes.gisLayerinfoAttr=feature.attributes[o.gisLayerinfoAttrKey];
  126. feature.attributes.infokey=o.gisLayerinfoKey+"_"+feature.attributes.gisLayerinfoAttr;
  127. feature.attributes.gisEditLayerinfoKey=o.gisLayerinfoKey;
  128. feature.attributes.featureidval=feature.fid;
  129. feature.attributes.labelfieldid=o.labelfield;
  130. if(o.processCompleted&&gis.script[o.processCompleted]){
  131. gis.script[o.processCompleted](feature,o);
  132. }
  133. }
  134. map.setCenter(new SuperMap.LonLat(centerLonLat.lon, centerLonLat.lat),o.zoom||6);
  135. }
  136. },
  137. "processFailed": gis.script.sqlProcessFailed
  138. }
  139. });
  140. featuresBySQLService.processAsync(featuresBySQLParams);
  141. //featuresBySQLService.processAsync(featuresBySQLParams);
  142. }
  143. gis.edit.addFeatureCompleted = function(drawGeometryArgs){
  144. $.confirm({
  145. title : '确认框',
  146. content : '确认保存编辑区域吗',
  147. confirm : function() {
  148. if(drawGeometryArgs){
  149. gis.edit.addFeatureCompletedService(drawGeometryArgs);
  150. }
  151. },
  152. cancel: function(){
  153. modifyvectorLayer.removeAllFeatures();
  154. }
  155. });
  156. }
  157. gis.edit.addFeatureCompletedService = function(drawGeometryArgs){
  158. gis.edit.progressdiv('show');
  159. drawPolygon.deactivate();
  160. if(!gis.script.isBlank(parameterMap.editType)&&gis.script.isNum(parameterMap.id)){
  161. //console.log(parameterMap);
  162. if(dataServices){
  163. gis.script.consolelog('dataServices',dataServices);
  164. for(var n in dataServices){
  165. var data=gisConfigBean.dataconfig[n];
  166. var type=editmap[parameterMap.editType];
  167. if(data&&type==data.gisLayerinfoKey){
  168. data=jQuery.extend(true, {}, data);
  169. data.datasetNames=data.datasetNames.split(",");
  170. data.fields=data.fields.split(",");
  171. data.url=data.url||defdataUrl;
  172. //console.log(data);
  173. var geometry = drawGeometryArgs.feature.geometry;
  174. var feature = new SuperMap.Feature.Vector();
  175. feature.geometry = drawGeometryArgs.feature.geometry;
  176. //feature.style = style;
  177. modifyvectorLayer.addFeatures(feature);
  178. if(nowModifyFeature){
  179. gis.script.editgisFeatureService(nowModifyFeature,feature);
  180. return;
  181. }
  182. if(data.gisLayerinfoAttrKey){
  183. var features = {
  184. fieldNames:[data.gisLayerinfoAttrKey],
  185. fieldValues:[parameterMap.id],
  186. geometry:geometry
  187. };
  188. var editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({
  189. features: [features],
  190. editType: SuperMap.REST.EditType.ADD,
  191. returnContent:false
  192. });
  193. if(data.url&&data.datasetNames&&data.datasetNames.length==1){
  194. var dnames=data.datasetNames[0].split(":");
  195. if(dnames&&dnames.length==2){
  196. //console.log("dnames",dnames);
  197. var url=data.url+"/datasources/"+dnames[0]+"/datasets/"+dnames[1];
  198. var editFeatureService = new SuperMap.REST.EditFeaturesService(url, {
  199. eventListeners: {
  200. "processCompleted": function(editFeaturesEventArgs) {
  201. gis.script.updateFeaturesProcessCompleted(editFeaturesEventArgs,feature);
  202. },
  203. "processFailed": gis.script.sqlProcessFailed
  204. }
  205. });
  206. editFeatureService.processAsync(editFeatureParameter);
  207. }
  208. }
  209. }
  210. break;
  211. }
  212. }
  213. }
  214. }
  215. }
  216. gis.edit.delFeatureCompleted = function(feature){
  217. $.confirm({
  218. title : '确认框',
  219. content : '确认删除区域吗',
  220. confirm : function() {
  221. if(event){
  222. gis.edit.delFeatureCompletedService(feature);
  223. }
  224. },
  225. cancel: function(){
  226. modifyvectorLayer.removeAllFeatures();
  227. }
  228. });
  229. }
  230. gis.edit.delFeatureCompletedService = function(feature){
  231. if(feature){
  232. //console.log(feature);
  233. if(feature.attributes&&!gis.script.isBlank(feature.attributes.featureidval)){
  234. if(dataServices){
  235. gis.script.consolelog('dataServices',dataServices);
  236. for(var n in dataServices){
  237. var data=gisConfigBean.dataconfig[n];
  238. var type=editmap[parameterMap.editType];
  239. if(data&&type==data.gisLayerinfoKey){
  240. data=jQuery.extend(true, {}, data);
  241. data.datasetNames=data.datasetNames.split(",");
  242. data.fields=data.fields.split(",");
  243. data.url=data.url||defdataUrl;
  244. var editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({
  245. IDs: [feature.attributes.featureidval],
  246. editType: SuperMap.REST.EditType.DELETE
  247. });
  248. if(data.url&&data.datasetNames&&data.datasetNames.length==1){
  249. var dnames=data.datasetNames[0].split(":");
  250. if(dnames&&dnames.length==2){
  251. //console.log("dnames",dnames);
  252. var url=data.url+"/datasources/"+dnames[0]+"/datasets/"+dnames[1];
  253. var editFeatureService = new SuperMap.REST.EditFeaturesService(url, {
  254. eventListeners: {
  255. "processCompleted": function(editFeaturesEventArgs) {
  256. gis.script.updateFeaturesProcessCompleted(editFeaturesEventArgs,null);
  257. },
  258. "processFailed": gis.script.sqlProcessFailed
  259. }
  260. });
  261. //console.log(editFeatureParameter);
  262. editFeatureService.processAsync(editFeatureParameter);
  263. }
  264. }
  265. break;
  266. }
  267. }
  268. }
  269. }
  270. }
  271. }
  272. gis.edit.syncDataLayer = function(){
  273. if(!gis.script.isBlank(parameterMap.editType)&&gis.script.isNum(parameterMap.id)){
  274. var type=editmap[parameterMap.editType];
  275. if(!gis.script.isBlank(type)){
  276. if(dataServices){
  277. for(var n in dataServices){
  278. var data=gisConfigBean.dataconfig[n];
  279. if(data.gisLayerinfoKey&&data.gisLayerinfoKey==type){
  280. data=jQuery.extend(true, {}, data);
  281. if(data.Model&&data.Model[gis.script.modelid]){
  282. var model=data.Model[gis.script.modelid];
  283. data.datasetNames=data.datasetNames.split(",");
  284. data.fields=data.fields.split(",");
  285. data.cachedata=model.cachedata||data.cachedata;
  286. data.zoom=model.zoom||data.zoom;
  287. data.processCompleted=model.processCompleted;
  288. data.onSelectOpenPopkey=model.onSelectOpenPopkey;
  289. data.treelocationHighlight=model.treelocationHighlight||"false";
  290. data.modelObj=model;
  291. data.url=data.url||defdataUrl;
  292. data.attributeFilter=data.gisLayerinfoAttrKey+"="+parameterMap.id;
  293. gis.edit.syncDataLayerSourcesService(data,parameterMap);
  294. }
  295. break;
  296. }
  297. }
  298. }
  299. }
  300. }
  301. }
  302. gis.edit.syncDataLayerTargetsService = function(data,sourcesfeature,objdata){
  303. if(!data||!data.syncDatasetNames){
  304. return;
  305. }
  306. var o=jQuery.extend(true, {}, data);
  307. o.datasetNames=data.syncDatasetNames.split(",");
  308. var featureParam = new SuperMap.REST.FilterParameter({
  309. //name: o.name,
  310. fields:o.fields,
  311. attributeFilter:o.attributeFilter
  312. });
  313. var featuresBySQLParams=new SuperMap.REST.GetFeaturesBySQLParameters({
  314. //toIndex:65536,
  315. toIndex:-1,
  316. queryParameter:featureParam,
  317. datasetNames:o.datasetNames
  318. });
  319. var featuresBySQLService = new SuperMap.REST.GetFeaturesBySQLService(o.url, {
  320. eventListeners: {
  321. "processCompleted":function(e){
  322. gis.edit.progressdiv('show');
  323. var editFeatureParameter;
  324. var result=e.result;
  325. //console.log('result>>',result);
  326. var features=result.features;
  327. var targetsfeature;
  328. if(features&&features.length){
  329. targetsfeature = features[0];
  330. }
  331. //console.log('sourcesfeature>>',sourcesfeature);
  332. //console.log('targetsfeature>>',targetsfeature);
  333. if(!sourcesfeature&&!targetsfeature){
  334. //目标源和数据源多不存在地物,无需操作,提示同步完成
  335. gis.script.toastmessage({text:'同步完成'});
  336. return;
  337. }else if(!sourcesfeature){
  338. //目标源存在地物,可是数据源不存在时,进行删除操作
  339. if(!gis.script.isBlank(targetsfeature.fid)){
  340. editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({
  341. IDs: [targetsfeature.fid],
  342. editType: SuperMap.REST.EditType.DELETE
  343. });
  344. //console.log('editFeatureParameter>>',editFeatureParameter);
  345. }
  346. }else if(!targetsfeature){
  347. //目标源存在地物,可是数据源存在时,进行新增操作
  348. if(sourcesfeature&&sourcesfeature.geometry){
  349. var addfeatures = {
  350. fieldNames:[data.gisLayerinfoAttrKey],
  351. fieldValues:[parameterMap.id],
  352. geometry:sourcesfeature.geometry
  353. };
  354. //console.log('addfeatures>>',addfeatures);
  355. editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({
  356. features: [addfeatures],
  357. editType: SuperMap.REST.EditType.ADD,
  358. returnContent:false
  359. });
  360. }
  361. }else{
  362. //目标源和数据源同时存在时,进行更新操作
  363. if(o.fields&&o.fields.length){
  364. var attributes = feature.attributes;
  365. var attrNames = data.fields;
  366. var attrValues = [];
  367. for(var i=0;i<attrNames.length;i++){
  368. //alert(attrNames[i]);
  369. attrValues.push(attributes[attrNames[i]]);
  370. }
  371. if(sourcesfeature&&sourcesfeature.geometry
  372. &&targetsfeature&&!gis.script.isBlank(targetsfeature.fid)){
  373. var updatefeatures = {
  374. fieldNames:attrNames,
  375. fieldValues:attrValues,
  376. geometry:sourcesfeature.geometry
  377. };
  378. updatefeatures.geometry.id=targetsfeature.fid;
  379. var editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({
  380. features: [updatefeatures],
  381. editType: SuperMap.REST.EditType.UPDATE
  382. });
  383. //console.log('updatefeatures.>>',updatefeatures);
  384. }
  385. }
  386. }
  387. if(editFeatureParameter
  388. &&o.url&&o.datasetNames&&o.datasetNames.length==1){
  389. var dnames=o.datasetNames[0].split(":");
  390. if(dnames&&dnames.length==2){
  391. //console.log("dnames",dnames);
  392. var url=o.url+"/datasources/"+dnames[0]+"/datasets/"+dnames[1];
  393. var editFeatureService = new SuperMap.REST.EditFeaturesService(url, {
  394. eventListeners: {
  395. "processCompleted": function(editFeaturesEventArgs) {
  396. gis.edit.syncFeaturesProcessCompleted(editFeaturesEventArgs,null);
  397. },
  398. "processFailed": gis.script.sqlProcessFailed
  399. }
  400. });
  401. //console.log(editFeatureParameter);
  402. editFeatureService.processAsync(editFeatureParameter);
  403. }
  404. }else{
  405. gis.edit.progressdiv('none');
  406. }
  407. },
  408. "processFailed": gis.script.sqlProcessFailed
  409. }
  410. });
  411. featuresBySQLService.processAsync(featuresBySQLParams);
  412. }
  413. gis.edit.syncDataLayerSourcesService = function(data,objdata){
  414. var o=jQuery.extend(true, {}, data);
  415. //测试时开放
  416. //o.attributeFilter=o.gisLayerinfoAttrKey+"=92100111";
  417. var featureParam = new SuperMap.REST.FilterParameter({
  418. //name: o.name,
  419. fields:o.fields,
  420. attributeFilter:o.attributeFilter
  421. });
  422. var featuresBySQLParams=new SuperMap.REST.GetFeaturesBySQLParameters({
  423. //toIndex:65536,
  424. toIndex:-1,
  425. queryParameter:featureParam,
  426. datasetNames:o.datasetNames
  427. });
  428. var featuresBySQLService = new SuperMap.REST.GetFeaturesBySQLService(o.url, {
  429. eventListeners: {
  430. "processCompleted":function(e){
  431. var result=e.result;
  432. //console.log('result>>',result);
  433. var features=result.features;
  434. var sourcesfeature;
  435. if(features&&features.length){
  436. sourcesfeature = features[0];
  437. }
  438. gis.edit.syncDataLayerTargetsService(data,sourcesfeature,objdata);
  439. },
  440. "processFailed": gis.script.sqlProcessFailed
  441. }
  442. });
  443. featuresBySQLService.processAsync(featuresBySQLParams);
  444. }
  445. gis.edit.syncFeaturesProcessCompleted = function(editFeaturesEventArgs){
  446. gis.edit.progressdiv('none');
  447. if(editFeaturesEventArgs&&editFeaturesEventArgs.result.resourceInfo.succeed) {
  448. //alert("更新地物成功");
  449. gis.script.toastmessage({text:'同步地物成功。',type:'success'});
  450. }else{
  451. gis.script.toastmessage({text:'同步地物失败。',type:'warning'});
  452. }
  453. gis.edit.syncgisStatus({syncsucceed:editFeaturesEventArgs.result.resourceInfo.succeed});
  454. }
  455. gis.edit.syncgisStatus=function(obj){
  456. if(obj){
  457. if(!gis.script.isBlank(parameterMap.editType)&&gis.script.isNum(parameterMap.id)){
  458. var type=editmap[parameterMap.editType];
  459. if(!gis.script.isBlank(type)){
  460. obj.tableName=type;
  461. obj.zyid=parameterMap.id;
  462. //var objdata=JSON.stringify(jQuery.extend(true, parameterMap, obj));
  463. var objdata=JSON.stringify(obj);
  464. gis.script.jsonAjax({url:contextPath+"/editgis/syncgisStatus.html",contentType:'application/json;charset=utf-8',async:true,data:objdata},
  465. function(data){
  466. });
  467. }
  468. }
  469. }
  470. }
  471. gis.edit.progressdiv = function(v){
  472. var progressdiv=document.getElementById("progressdiv");
  473. if(progressdiv&&v){
  474. if(v=='show'){
  475. progressdiv.style.display="";
  476. }else{
  477. progressdiv.style.display="none";
  478. }
  479. }
  480. }
  481. $(document).ready(function() {
  482. });