gis.tree.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. var gis = gis || {};
  2. gis.tree = function() {
  3. };
  4. gis.tree.autohide0Node=true;
  5. gis.tree.gqshowcbinbw=!true;
  6. gis.tree.filter = function(treeId, parentNode, childNodes) {
  7. //console.log('>2>parentNode:',parentNode);
  8. //childNodes ={"children":[{"children":[{"children":[],"iconSkin":"","id":"402881e750ef634b0150ef64cce10001","isParent":false,"name":"2","open":false,"pId":"","type":""},{"children":[],"iconSkin":"","id":"402881e750ec68340150ec68af3c0000","isParent":true,"name":"11111","open":false,"pId":"","type":""},{"children":[],"iconSkin":"","id":"402881e750eed3aa0150eed4fe510001","isParent":true,"name":"市局下","open":false,"pId":"","type":""},{"children":[],"iconSkin":"","id":"402881e750ebc9ca0150ebede1a60006","isParent":true,"name":"港口局","open":false,"pId":"","type":""},{"children":[],"iconSkin":"","id":"402881e750ef34c80150ef35d9990001","isParent":true,"name":"222","open":false,"pId":"","type":""}],"iconSkin":"","id":"402881e750dab7fa0150dabe66630002","isParent":false,"name":"市局","open":false,"pId":"","type":""},{"children":[{"children":[],"iconSkin":"","id":"402881e750ef78f80150ef7de1940001","isParent":false,"name":"2","open":false,"pId":"","type":""}],"iconSkin":"","id":"402881e750ef78f80150ef7bf30c0000","isParent":false,"name":"2","open":false,"pId":"","type":""}],"iconSkin":"","id":"01","isParent":false,"name":"行政单位信息","open":true,"pId":"","type":""};
  9. //alert(JSON.stringify(childNodes));
  10. //alert(childNodes);
  11. //childNodes={"iconSkin":"","id":"01","isParent":true,"name":"行政单位信息","open":true,"pId":"","type":"","children":[{"iconSkin":"","id":"01","isParent":true,"name":"行政单位","open":false,"pId":"","type":""}]}
  12. //childNodes=[{"iconSkin":"","id":"01","isParent":true,"name":"行政单位","open":false,"pId":"","type":""}];
  13. /*
  14. if(parentNode&&parentNode.treeNodeType){
  15. if(parentNode.treeNodeType='GK_BASIC_JSJY_GK_GK'){
  16. childNodes=[{"iconSkin":"","id":"01","isParent":true,"name":"行政单位","open":false,"pId":"","type":""}]
  17. }
  18. }
  19. */
  20. //debugger;
  21. /*
  22. if(childNodes){
  23. if(!parentNode){
  24. alert(JSON.stringify(parentNode));
  25. }else{
  26. parentNode.name="xxx";
  27. for(var ii=0;ii<childNodes.length;ii++){
  28. childNodes[ii].name="xxx"
  29. }
  30. }
  31. }*/
  32. //console.log('>22222>gis.script.cbdataInfostatistics:',gis.script.cbdataInfostatistics);
  33. //&&(node.treeNodeType=='GK_BASIC_JSJY_JYR'||node.treeNodeType=='GK_BASIC_JSJY_JYR_BW')
  34. /*
  35. if(parentNode&&parentNode.treeNodeType=="GK_BASIC_JSJY_GK_GQ"){
  36. childNodes=gis.tree.addcbtotree(parentNode,childNodes,parentNode.treeNodeType,("V"+parentNode.code));
  37. }
  38. */
  39. return childNodes;
  40. }
  41. gis.tree.showIconForTree = function(treeId, treeNode) {
  42. if(treeNode){
  43. //alert(treeNode.iconSkin);
  44. return !gis.script.isBlank(treeNode.iconSkin);
  45. }
  46. return false;
  47. //return !treeNode.isParent;
  48. }
  49. gis.tree.nodeClick = function(event, treeId, treeNode, clickFlag) {
  50. //map.setCenter(new SuperMap.LonLat(121.0701, 32.1734), 1);
  51. //alert(map.getScale())
  52. //map.zoomToScale(1/1010000.3776);
  53. //$("#othen").html($("#othen").html()+","+map.getScale());
  54. //alert(JSON.stringify(gis.script.gisLayerinfo));
  55. if(gis.script.layerloadover){
  56. if(typeof(treeNode.id)!="undefined"){
  57. var issetCenter=false;
  58. if(treeNode.id==0){
  59. map.setCenter(new SuperMap.LonLat(lon, lat), 0);
  60. issetCenter=true;
  61. }
  62. else if(treeNode.treeNodeType&&treeNode.treeNodeType=="HS_AIS"){
  63. //alert(treeNode);
  64. //console.log("treeNode",treeNode);
  65. if(gis.script.isNum(treeNode.lon)&&gis.script.isNum(treeNode.lat)){
  66. map.setCenter(new SuperMap.LonLat(treeNode.lon, treeNode.lat), 10);
  67. }
  68. //boatLayer gis.script.drawFillMarker(gis.script.boatonLayer["boatdanger"+obj.danger],obj);
  69. boatLayer.removeAllFeatures();
  70. gis.script.drawFillMarker(boatLayer,treeNode);
  71. }
  72. else{
  73. //alert(treeNode.gisinfo);
  74. //map.zoomToScale(0.000001180591620);
  75. if(treeNode.treeNodeType&&gis.script.gisLayerinfo[treeNode.treeNodeType]){
  76. var objdata={}
  77. if(!gis.script.isBlank(treeNode.gisinfo)){
  78. var gobj=eval("("+treeNode.gisinfo+")");
  79. objdata.id=gobj.smid;
  80. objdata.zoomto=gobj.zoomto;
  81. }
  82. if(!gis.script.isBlank(treeNode.code)){
  83. objdata.id=treeNode.code;
  84. }
  85. //alert(objdata.id)
  86. if(objdata.id){
  87. var info=gis.script.gisLayerinfo[treeNode.treeNodeType][objdata.id];
  88. if(info&&typeof(info.lon)!="undefined"&&typeof(info.lat)!="undefined"){
  89. map.setCenter(new SuperMap.LonLat(info.lon, info.lat),objdata.zoomto||info.zoom||6);
  90. issetCenter=true;
  91. }else{
  92. gis.tree.loadgisService(treeNode,objdata);
  93. }
  94. }
  95. }
  96. /*
  97. if(g){
  98. var gobj=eval("("+g+")");
  99. if(gobj&&gobj.smid){
  100. if(treeNode.treeNodeType&&gis.script.gisLayerinfo[treeNode.treeNodeType]){
  101. var info=gis.script.gisLayerinfo[treeNode.treeNodeType][gobj.smid];
  102. if(info&&typeof(info.lon)!="undefined"&&typeof(info.lat)!="undefined"){
  103. map.setCenter(new SuperMap.LonLat(info.lon, info.lat),gobj.zoomto||5);
  104. }
  105. }
  106. }
  107. }
  108. */
  109. }
  110. if(!issetCenter){
  111. //alert("缺少关联数据,定位失败...");
  112. }
  113. }
  114. }
  115. return gis.script.layerloadover;
  116. }
  117. gis.tree.loadgisService = function(treeNode,objdata){
  118. //alert(treeNode.treeNodeType+"--"+objdata.id);
  119. var dataServices=gisConfigBean.dataconfig;
  120. if(dataServices){
  121. gis.script.consolelog('dataServices',dataServices);
  122. for(var n in dataServices){
  123. var data=gisConfigBean.dataconfig[n];
  124. if(data.gisLayerinfoKey&&treeNode.treeNodeType&&treeNode.treeNodeType==data.gisLayerinfoKey){
  125. //alert(treeNode.treeNodeType+"--"+objdata.id);
  126. var originaldata = gisConfigBean.dataconfig[n];
  127. var data=jQuery.extend(true, {}, originaldata);
  128. if(data.Model&&data.Model[gis.script.modelid]){
  129. var model=data.Model[gis.script.modelid];
  130. data.datasetNames=data.datasetNames.split(",");
  131. data.fields=data.fields.split(",");
  132. data.cachedata=model.cachedata||data.cachedata;
  133. data.zoom=model.zoom||data.zoom;
  134. data.attributeFilter=data.gisLayerinfoAttrKey+"="+objdata.id;
  135. data.treelocationHighlight=model.treelocationHighlight||"false";
  136. data.url=data.url||defdataUrl;
  137. //alert(data.attributeFilter);
  138. gis.script.loadServicetreelocation(data);
  139. }
  140. break;
  141. }
  142. }
  143. }
  144. }
  145. gis.script.loadServicetreelocation = function(o){
  146. var featureParam = new SuperMap.REST.FilterParameter({
  147. //name: o.name,
  148. fields:o.fields,
  149. attributeFilter:o.attributeFilter
  150. });
  151. var featuresBySQLParams=new SuperMap.REST.GetFeaturesBySQLParameters({
  152. //toIndex:65536,
  153. toIndex:-1,
  154. queryParameter:featureParam,
  155. datasetNames:o.datasetNames
  156. });
  157. var featuresBySQLService = new SuperMap.REST.GetFeaturesBySQLService(o.url, {
  158. eventListeners: {
  159. "processCompleted":function(e){
  160. var result=e.result;
  161. gis.script.consolelog('result>>',result);
  162. var features=result.features;
  163. if(features&&features.length){
  164. //alert(features.length);
  165. var feature = features[0];
  166. var centerLonLat = feature.geometry.getBounds().getCenterLonLat();
  167. if(locationLayer){
  168. locationLayer.removeAllFeatures();
  169. if(o.treelocationHighlight&&o.treelocationHighlight=="true"){
  170. feature.style = {
  171. strokeColor: "#304DBE",
  172. strokeWidth: 2,
  173. pointerEvents: "visiblePainted",
  174. fillColor: "#304DBE",
  175. fillOpacity: 0.9
  176. };
  177. //bwvectorLayer.addFeatures(feature);
  178. locationLayer.addFeatures(feature);
  179. try{
  180. if(o.labelfield&&feature.attributes[o.labelfield]){
  181. labelLayer.removeAllFeatures();
  182. var geoText = new SuperMap.Geometry.GeoText(centerLonLat.lon, centerLonLat.lat,feature.attributes[o.labelfield]);
  183. var geotextFeature = new SuperMap.Feature.Vector(geoText);
  184. labelLayer.addFeatures([geotextFeature]);
  185. }
  186. }catch(e){
  187. }
  188. }
  189. }
  190. //118.77022 32.12486
  191. //alert(centerLonLat.lon+"*"+centerLonLat.lat);
  192. map.setCenter(new SuperMap.LonLat(centerLonLat.lon, centerLonLat.lat),o.zoom||6);
  193. }
  194. },
  195. "processFailed": gis.script.sqlProcessFailed
  196. }
  197. });
  198. featuresBySQLService.processAsync(featuresBySQLParams);
  199. }
  200. gis.tree.beforeAsync = function(treeId, treeNode){
  201. if(treeNode){
  202. //otherParam.ttt.xx='xxx';
  203. //alert();
  204. }
  205. }
  206. gis.tree.onAsyncSuccess = function(event, treeId, treeNode, msg){
  207. var treeObj = $.fn.zTree.getZTreeObj(treeId);
  208. if(!treeNode){
  209. if(treeObj){
  210. var nodes = treeObj.getNodes();
  211. /*
  212. for(var i in nodes){
  213. var node=nodes[i];
  214. alert(node.name);
  215. node.name="xxx";
  216. treeObj.updateNode(node);
  217. }
  218. */
  219. //debugger;
  220. gis.tree.updatecb(treeObj,nodes,null);
  221. }
  222. }else if(treeNode.treeNodeType&&treeNode.treeNodeType=="GK_BASIC_JSJY_GK_GQ"){
  223. //gis.script.loadConfigXmlBWService("bwsjServices",{id:"759DF99526FD4F7F934EF2DEC3C6CFF3",code:'32100104'});
  224. //alert(treeNode.name);
  225. //gis.tree.addcbtotree(treeNode,treeNode.treeNodeType,("V"+treeNode.code));
  226. gis.script.loadConfigXmlBWService("bwsjServices",treeNode);
  227. }
  228. else{
  229. gis.tree.updatecb(treeObj,treeNode.children,treeNode);
  230. }
  231. }
  232. gis.tree.getcbinfo=function(info,key,code){
  233. var s1=0;
  234. if(info){
  235. if(!code){
  236. if(gis.script.cbdataInfostatistics[key]){
  237. for(var kk in gis.script.cbdataInfostatistics[key]){
  238. var v=gis.script.cbdataInfostatistics[key][kk];
  239. if(v){
  240. s1=s1+v.length;
  241. }
  242. }
  243. }
  244. }else{
  245. if(info[key]){
  246. var v=info[key][code];
  247. if(v){
  248. s1=v.length
  249. }
  250. }
  251. }
  252. }
  253. return s1;
  254. }
  255. gis.tree.updatecb = function(treeObj,nodes,pnode){
  256. if(nodes&&nodes.length){
  257. //debugger;
  258. //alert(nodes.length);
  259. for(var i in nodes){
  260. var node=nodes[i];
  261. //treeObj.showNode(node);
  262. if(node.treeNodeType&&node.treeNodeType=="HS_AIS"){
  263. continue;
  264. }
  265. if(node.open){
  266. gis.tree.updatecb(treeObj,node.children);
  267. }
  268. //进出港船舶总数:系泊总数:靠泊危化品船
  269. var newName=[];
  270. var s1=0,s2=0,s3=0;
  271. if(!node.treeNodeType){
  272. s1=gis.tree.getcbinfo(gis.script.cbdataInfostatistics,"GK_BASIC_JSJY_GK_GK",null);
  273. s2=gis.tree.getcbinfo(gis.script.cbdataInfostatistics,"GK_BASIC_JSJY_GK_GK_STATUS",null);
  274. s3=gis.tree.getcbinfo(gis.script.cbdataInfostatistics,"GK_BASIC_JSJY_GK_GK_DANGER",null);
  275. newName.push("进出港船:");
  276. newName.push(s1);
  277. newName.push(",系泊:");
  278. newName.push(s2);
  279. newName.push(",靠泊危化品船:");
  280. newName.push(s3);
  281. }else{
  282. //GK_BASIC_JSJY_GK_GK_320001
  283. var vkey="V"+node.code;
  284. //console.log('>3>vkey:',vkey);
  285. s1=gis.tree.getcbinfo(gis.script.cbdataInfostatistics,node.treeNodeType,vkey);
  286. s2=gis.tree.getcbinfo(gis.script.cbdataInfostatistics,(node.treeNodeType+"_STATUS"),vkey);
  287. s3=gis.tree.getcbinfo(gis.script.cbdataInfostatistics,(node.treeNodeType+"_DANGER"),vkey);
  288. if(!node.oldname){
  289. node.oldname=node.name;
  290. }
  291. var nodename=node.oldname;
  292. if(gis.script.isBlank(nodename)){
  293. nodename="";
  294. }
  295. newName.push(nodename);
  296. newName.push("(");
  297. newName.push(s1);
  298. newName.push(",");
  299. newName.push(s2);
  300. newName.push(",");
  301. newName.push(s3);
  302. newName.push(")");
  303. }
  304. if(gis.tree.autohide0Node&&node.treeNodeType&&node.treeNodeType=='GK_BASIC_JSJY_GK_GQ'){
  305. if(s1<=0){
  306. node.isParent=false;
  307. }
  308. }
  309. if(node.treeNodeType&&node.treeNodeType=='GK_BASIC_JSJY_JYR_BW'){
  310. //console.log("JYR_BW:",node);
  311. if(s1>0){
  312. node.isParent=true;
  313. //node.children=gis.tree.addcbtotree(node,[],node.treeNodeType,("V"+node.code));
  314. //alert(node.code)
  315. //node.children.push({"iconSkin":"","id":"01","isParent":false,"name":"行政单位","open":false,"pId":"","type":""})
  316. //treeObj.addNodes(node, {id:(100), pId:pnode.id, name:"new node"});
  317. gis.tree.addcbtotreeApi(treeObj,node,node.treeNodeType,("V"+node.code));
  318. }
  319. }
  320. node.name=newName.join("");
  321. if(gis.tree.autohide0Node){
  322. if(node.treeNodeType&&(node.treeNodeType=='GK_BASIC_JSJY_JYR'||node.treeNodeType=='GK_BASIC_JSJY_JYR_BW')){
  323. //alert(1);
  324. if(s1<=0){
  325. treeObj.hideNode(node);
  326. continue;
  327. }else{
  328. treeObj.showNode(node);
  329. }
  330. }
  331. }
  332. treeObj.updateNode(node);
  333. }
  334. }
  335. }
  336. gis.tree.addcbtotreeApi = function(treeObj,node,key,vkey){
  337. if(gis.script.cbdataInfostatistics[key]){
  338. var v=gis.script.cbdataInfostatistics[key][vkey];
  339. if(v){
  340. //var newnode={"iconSkin":"","id":"01","isParent":false,"name":"行政单位","open":false,"pId":"","type":""}
  341. //var newnode={isParent:false,open:false,treeNodeType:"HS_AIS",pId:"",type:""};
  342. //console.log("vvv:",v);
  343. for(var ij=0;ij<v.length;ij++){
  344. var vo=v[ij];
  345. if(vo.arrt&&(!vo.arrt.cbshowinjyr||key!="GK_BASIC_JSJY_GK_GQ"||gis.tree.gqshowcbinbw)){
  346. //alert(vo.arrt.cbshowinjyr);
  347. var newnode=jQuery.extend(true, {isParent:false,open:false,treeNodeType:"HS_AIS",pId:"",type:""}, vo.arrt);
  348. newnode.id="mmsi"+(ij+(vo.arrt.mmsi));
  349. if(gis.script.isBlank(newnode.name)){
  350. newnode.name="";
  351. if(!gis.script.isBlank(vo.arrt.mmsi)){
  352. newnode.name="("+vo.arrt.mmsi+")";
  353. }
  354. }
  355. //console.log("newnode:",newnode);
  356. newnode.iconSkin="";
  357. if(newnode.danger&&newnode.danger==1
  358. &&newnode.status&&newnode.status==5){
  359. newnode.iconSkin="icon001"
  360. }else if(newnode.status&&newnode.status==5){
  361. newnode.iconSkin="icon002";
  362. }else if(newnode.danger&&newnode.danger==1){
  363. newnode.iconSkin="icon003";
  364. }
  365. //console.log("vvv:",newnode);
  366. treeObj.addNodes(node, newnode);
  367. }
  368. }
  369. }
  370. }
  371. }
  372. gis.tree.addcbtotree = function(node,carray,key,vkey){
  373. var children=carray||[];
  374. if(gis.script.cbdataInfostatistics[key]){
  375. var v=gis.script.cbdataInfostatistics[key][vkey];
  376. if(v){
  377. //var newnode={"iconSkin":"","id":"01","isParent":false,"name":"行政单位","open":false,"pId":"","type":""}
  378. //var newnode={isParent:false,open:false,treeNodeType:"HS_AIS",pId:"",type:""};
  379. //console.log("vvv:",v);
  380. for(var ij=0;ij<v.length;ij++){
  381. var vo=v[ij];
  382. if(vo.arrt){
  383. var newnode=jQuery.extend(true, {isParent:false,open:false,treeNodeType:"HS_AIS",pId:"",type:""}, vo.arrt);
  384. if(gis.script.isBlank(newnode.name)){
  385. newnode.name="";
  386. }
  387. //console.log("newnode:",newnode);
  388. newnode.iconSkin="";
  389. if(newnode.danger&&newnode.danger==1
  390. &&newnode.status&&newnode.status==5){
  391. newnode.iconSkin="icon001"
  392. }else if(newnode.status&&newnode.status==5){
  393. newnode.iconSkin="icon002";
  394. }else if(newnode.danger&&newnode.danger==1){
  395. newnode.iconSkin="icon003";
  396. }
  397. /*
  398. if(newnode.status&&newnode.status==5){
  399. newnode.iconSkin="icon03";
  400. }
  401. if(newnode.danger&&newnode.danger==1){
  402. newnode.iconSkin="icon01";
  403. }
  404. */
  405. children.push(newnode);
  406. }
  407. }
  408. }
  409. }
  410. return children;
  411. }
  412. gis.tree.updatenodecb = function(treeObj,nodes){
  413. }
  414. gis.tree.initcbtree = function(){
  415. var setting = {
  416. view: {
  417. selectedMulti: false,
  418. showIcon: gis.tree.showIconForTree
  419. },
  420. key: {
  421. title:"title"
  422. },
  423. async: {
  424. enable: true,
  425. type: "post",
  426. dataType:"json",
  427. contentType: "application/json",
  428. url: contextPath+"/zygl/treejson.html",
  429. autoParam: ["id", "name","treeNodeType"],
  430. otherParam: {async:'treejson',rootName:"船舶总数",isHidden:(gis.tree.autohide0Node?1:0) },
  431. dataFilter: gis.tree.filter
  432. },
  433. callback: {
  434. onDblClick: gis.tree.nodeClick,
  435. beforeAsync: gis.tree.beforeAsync,
  436. onAsyncSuccess: gis.tree.onAsyncSuccess
  437. }
  438. };
  439. $.fn.zTree.init($("#tree"), setting);
  440. }
  441. $(document).ready(function() {
  442. var treediv=$("#treediv");
  443. var tree=$("#tree");
  444. //alert($.support.leadingWhitespace)
  445. if($.support&&$.support.leadingWhitespace){
  446. tree.css("width",treediv.width()-10);
  447. tree.css("height",treediv.height()-12);
  448. }
  449. //$("#othen").css("display","none");
  450. //tree.css("height",treediv.height()-$("#othen").height());
  451. //tree.css("height",treediv.height());
  452. //gis.tree.initcbtree();
  453. });