PlotPanel.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. function initPlotPanel(div, serverUrl, drawControl,plotEditControl,plotting){
  2. var plotPanel = document.getElementById(div);
  3. var treeNodeStyle = document.createElement("div");
  4. treeNodeStyle.style.height = '50%';
  5. treeNodeStyle.style.width = '100%';
  6. treeNodeStyle.style.border = '1px solid #617775';
  7. treeNodeStyle.style.overflow ='scroll';
  8. var treeNode = document.createElement("div");
  9. treeNode.id = "tree";
  10. treeNode.className = "ztree";
  11. var iconNodeStyle = document.createElement("div");
  12. iconNodeStyle.style.height = '50%';
  13. iconNodeStyle.style.width = '100%';
  14. var iconNode = document.createElement("div");
  15. iconNode.id = "icon";
  16. iconNode.style.height = '100%';
  17. iconNode.style.width = '100%';
  18. iconNode.style.border = '1px solid #617775';
  19. iconNode.style.overflow ='scroll';
  20. treeNodeStyle.appendChild(treeNode);
  21. iconNodeStyle.appendChild(iconNode);
  22. plotPanel.appendChild(treeNodeStyle);
  23. plotPanel.appendChild(iconNodeStyle);
  24. function beforeClickTreeNode(treeId, treeNode){
  25. var tree = $.fn.zTree.getZTreeObj(treeId);
  26. if (treeNode.isParent) {
  27. tree.expandNode(treeNode);
  28. return false;
  29. } else {
  30. var iconNode = document.getElementById("icon");
  31. iconNode.innerHTML = "";
  32. createDrawNodes(treeNode, iconNode, drawControl, serverUrl);
  33. }
  34. }
  35. var setting = {
  36. view: {
  37. dblClickExpand: false,
  38. showLine: true,
  39. selectedMulti: false
  40. },
  41. data: {
  42. simpleData: {
  43. enable:true,
  44. idKey: "id",
  45. pIdKey: "pId",
  46. rootPId: 0
  47. }
  48. },
  49. callback: {
  50. beforeClick: beforeClickTreeNode
  51. }
  52. };
  53. var symbolLibManager = plotting.getSymbolLibManager();
  54. if(symbolLibManager.isInitializeOK()){
  55. var symbolTreeData = analysisSymbolTree(symbolLibManager);
  56. $.fn.zTree.init($("#tree"), setting, symbolTreeData);
  57. } else {
  58. symbolLibManager.initializecompleted.addEventListener(function (result) {
  59. if(result.libIDs.length !== 0){
  60. var symbolTreeData = analysisSymbolTree(symbolLibManager);
  61. $.fn.zTree.init($("#tree"), setting, symbolTreeData);
  62. }
  63. });
  64. symbolLibManager.initializeAsync();
  65. }
  66. }
  67. function analysisSymbolTree(symbolLibManager) {
  68. var treeData = [];
  69. var idIndex = addBasicCellTreeNodes(treeData);
  70. for(var i = 0; i < symbolLibManager.getSymbolLibNumber(); i++){
  71. var symbolLib = symbolLibManager.getSymbolLibByIndex(i);
  72. var rootSymbolInfo = symbolLib.getRootSymbolInfo();
  73. var rootSymbolIconUrl = symbolLib.getRootSymbolIconUrl();
  74. if(rootSymbolInfo.symbolNodeType === "SYMBOL_GROUP"){
  75. var rootNode = new Object();
  76. rootNode.id = idIndex+i;
  77. rootNode.pId = 0;
  78. rootNode.name = rootSymbolInfo.symbolName;
  79. rootNode.fullName = rootSymbolInfo.symbolName +"/";
  80. treeData.push(rootNode);
  81. idIndex = innerAnalysisSymbolTree(rootSymbolInfo.childNodes, treeData, rootNode, rootSymbolIconUrl);
  82. }
  83. }
  84. return treeData;
  85. }
  86. function createDrawNodes(treeNode, iconNode, drawControl, serverUrl){
  87. var drawNodeClick = function(){
  88. if(drawControl !== null){
  89. drawControl.deactivate();
  90. drawControl.setAction(this.libID,this.symbolCode);
  91. //设置标号默认的模型路径
  92. drawControl.drawFinishEvent.addEventListener(function (geo) {
  93. if(geo.symbolType === SuperMap.Plot.SymbolType.DOTSYMBOL ){
  94. geo.modelPath = './SampleData/plot/SuperMap3D_Air.gltf';
  95. geo.picturePath = './SampleData/plot/blupin.png';
  96. }
  97. });
  98. drawControl.serverUrl = this.serverUrl;
  99. drawControl.activate();
  100. if(undefined !== plotEditControl){
  101. plotEditControl.deactivate();
  102. }
  103. }
  104. }
  105. var me = this;
  106. var drawData = treeNode.drawData;
  107. var table = document.createElement("table");
  108. table.style.height = "100%";
  109. table.style.width = "100%";
  110. var i = 0;
  111. var rowLength = (drawData.length%3 === 0) ? drawData.length/3 : drawData.length/3+1;
  112. for(var j = 0; j < rowLength; j++){
  113. var tr = document.createElement("tr");
  114. for(var k = 0; k < 3; k++){
  115. if(drawData[i]){
  116. //存储菜单信息
  117. var td = document.createElement("td");
  118. var drawNode = document.createElement("div");
  119. drawNode.onclick = drawNodeClick;
  120. drawNode.style.textAlign = "center";
  121. drawNode.id = drawData[i].libID+ ""+ drawData[i].symbolCode;
  122. drawNode.libID = drawData[i].libID;
  123. drawNode.symbolCode = drawData[i].symbolCode;
  124. drawNode.serverUrl = serverUrl;
  125. //图片
  126. var img = document.createElement("img");
  127. img.src = drawData[i].icon;
  128. //文本
  129. var text = document.createElement("div");
  130. text.innerHTML = drawData[i].symbolName;
  131. drawNode.appendChild(img);
  132. drawNode.appendChild(text);
  133. td.appendChild(drawNode);
  134. tr.appendChild(td);
  135. }
  136. i++;
  137. }
  138. table.appendChild(tr);
  139. }
  140. iconNode.appendChild(table);
  141. }
  142. function addBasicCellTreeNodes(treeData){
  143. var cellRootNode = new Object();
  144. cellRootNode.id = 1;
  145. cellRootNode.pId = 0;
  146. cellRootNode.name = "基本标号";
  147. cellRootNode.fullName = "BasicCell" +"/";
  148. cellRootNode.drawData = [];
  149. treeData.push(cellRootNode);
  150. var symbolCode = [24, 28, 29, 31, 34, 410, 32, 590, 360, 390, 400, 350, 26, 370, 380, 44, 48, /*320,*/
  151. 1019, 1022, /*1024, 321,1023,*/ 1025, 1013, 1014, 3701, 3801, 4401 /*1016, 1017, 1026,*/ /*1001 1003, 1004*/];
  152. var symbolName = ["折线", "平行四边形", "圆", "椭圆", "注记", "正多边形", "多边形", "贝塞尔曲线", "闭合贝塞尔曲线",
  153. "集结地", "大括号", "梯形", "矩形", "弓形", "扇形", "弧线", "平行线", /*"注记指示框",*/ "同心圆", "组合圆",
  154. /*"标注框", "多角标注框","自由线",*/ "节点链", "跑道形", "八字形", "弓形","扇形","弧线"/*"箭头线", "沿线注记", "线型标注", "对象间连线"*/
  155. /*"多边形区域", "扇形区域"*/];
  156. var cellId = cellRootNode.id + 1;
  157. for(var i = 0; i < symbolCode.length; i++){
  158. var drawCellNode = {
  159. id: cellId++,
  160. pId: 0,
  161. icon:"js/plotPanelControl/" + cellRootNode.fullName + symbolCode[i] + ".png",
  162. symbolCode: symbolCode[i],
  163. libID: 0,
  164. symbolName: symbolName[i]
  165. };
  166. cellRootNode.drawData.push(drawCellNode);
  167. }
  168. return cellId;
  169. }
  170. function innerAnalysisSymbolTree(childSymbolInfos, treeData, parentNode, rootSymbolIconUrl){
  171. var drawData = [];
  172. var treeNodeId = parentNode.id+1;
  173. for(var i = 0; i < childSymbolInfos.length; i++){
  174. if(childSymbolInfos[i].symbolNodeType === "SYMBOL_GROUP"){
  175. var treeNode = new Object();
  176. treeNode.id = treeNodeId++;
  177. treeNode.pId = parentNode.id;
  178. treeNode.name = childSymbolInfos[i].symbolName;
  179. treeNode.fullName = parentNode.fullName + childSymbolInfos[i].symbolName+"/";
  180. treeData.push(treeNode);
  181. treeNodeId = innerAnalysisSymbolTree(childSymbolInfos[i].childNodes, treeData, treeNode, rootSymbolIconUrl);
  182. } else if(childSymbolInfos[i].symbolNodeType === "SYMBOL_NODE"){
  183. var drawNode = new Object();
  184. drawNode.id = treeNodeId++;
  185. drawNode.pId = parentNode.id;
  186. drawNode.icon = rootSymbolIconUrl + parentNode.fullName + childSymbolInfos[i].symbolCode + ".png";
  187. drawNode.symbolCode = childSymbolInfos[i].symbolCode;
  188. drawNode.libID = childSymbolInfos[i].libID;
  189. drawNode.symbolName = childSymbolInfos[i].symbolName + "_" + childSymbolInfos[i].symbolCode;
  190. drawData.push(drawNode);
  191. }
  192. }
  193. if(drawData.length !== 0){
  194. parentNode.drawData = drawData;
  195. }
  196. return treeNodeId;
  197. }