plot_querySymbolLib.html 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="utf-8">
  8. <title data-i18n="resources.title_querySymbolLib"></title>
  9. <style type="text/css">
  10. body {
  11. margin: 0;
  12. overflow: hidden;
  13. background: #fff;
  14. width: 100%;
  15. height: 100%
  16. }
  17. #map {
  18. position: absolute;
  19. width: 100%;
  20. height: 100%;
  21. }
  22. #toolbar {
  23. position: absolute;
  24. top: 50px;
  25. right: 10px;
  26. width: 300px;
  27. text-align: center;
  28. z-index: 100;
  29. border-radius: 4px;
  30. }
  31. .winContent {
  32. padding: 5px;
  33. overflow-y: auto;
  34. height: 220px;
  35. }
  36. .popupWindow {
  37. background: #FFF;
  38. z-index: 9999;
  39. display: block;
  40. }
  41. .winTitle {
  42. margin-left: 20px;
  43. font-size: 14px;
  44. font-weight: bold;
  45. }
  46. </style>
  47. </head>
  48. <body>
  49. <div id="toolbar" class="panel panel-primary">
  50. <div class='panel-heading'>
  51. <h5 class='panel-title text-center' data-i18n="resources.title_querySymbolLib"></h5></div>
  52. <div class='panel-body content'>
  53. <div class='panel'>
  54. <div class='input-group'>
  55. <span class='input-group-addon' data-i18n="resources.text_keyword"></span>
  56. <input class='form-control' id='queryCriteria' value=''/>
  57. </div>
  58. </div>
  59. <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_query" onmousemove="querySymbolLib()"/>&nbsp; &nbsp;
  60. <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_modify" onclick="editSymbol()"/>&nbsp; &nbsp;
  61. <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_clear" onclick="removeAllFeatur()"/>
  62. </div>
  63. <div id="popupWin" class="popupWindow">
  64. <div class='panel'>
  65. <div class='input-group'>
  66. <div class="winTitle">
  67. <span class="title_left" data-i18n="resources.text_queryResult"></span>
  68. </div>
  69. </div>
  70. </div>
  71. <div id="queryResult" class="winContent"></div>
  72. </div>
  73. </div>
  74. <div id="map"></div>
  75. <script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
  76. <script type="text/javascript" exclude="iclient-classic" include="iclient8c-plot" src="../../dist/classic/include-classic.js"></script>
  77. <script>
  78. var plottingLayer, plottingEdit, layer, drawGraphicObject, map, plotting, symbolLibManager;
  79. var loadSymbolComplete = false;
  80. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  81. var mapurl = host + "/iserver/services/map-world/rest/maps/World";
  82. var serverUrl = host + "/iserver/services/plot-jingyong/rest/plot/";
  83. init();
  84. function init() {
  85. map = new SuperMap.Map("map", {
  86. controls: [
  87. new SuperMap.Control.ScaleLine(),
  88. new SuperMap.Control.Zoom(),
  89. new SuperMap.Control.Navigation({
  90. dragPanOptions: {
  91. enableKinetic: true
  92. }
  93. })]
  94. });
  95. layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", mapurl, {
  96. transparent: true,
  97. cacheEnabled: true
  98. }, {maxResolution: "auto"});
  99. map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
  100. layer.events.on({"layerInitialized": addLayer});
  101. plottingLayer = new SuperMap.Layer.PlottingLayer("标绘图层", serverUrl);
  102. plottingLayer.style = {
  103. fillColor: "#66cccc",
  104. fillOpacity: 0.4,
  105. strokeColor: "#66cccc",
  106. strokeOpacity: 1,
  107. strokeWidth: 3,
  108. pointRadius: 6
  109. };
  110. // 绘制标号;
  111. drawGraphicObject = new SuperMap.Control.DrawFeature(plottingLayer, SuperMap.Handler.GraphicObject);
  112. //态势标绘编辑
  113. plottingEdit = new SuperMap.Control.PlottingEdit();
  114. //添加态势标绘控件
  115. map.addControls([plottingEdit, drawGraphicObject]);
  116. plotting = SuperMap.Plotting.getInstance(map, serverUrl);
  117. loadSymbolLib();
  118. }
  119. function addLayer() {
  120. map.addLayers([layer, plottingLayer]);
  121. map.setCenter(new SuperMap.LonLat(0, 0), 0);
  122. plottingEdit.activate();
  123. }
  124. function loadSymbolLib() {
  125. symbolLibManager = plotting.getSymbolLibManager();
  126. symbolLibManager.events.on({"initializeCompleted": initializeCompleted});
  127. symbolLibManager.initializeAsync();
  128. }
  129. function initializeCompleted() {
  130. loadSymbolComplete = true;
  131. }
  132. function PlottingDrawCancel() {
  133. drawGraphicObject.deactivate();
  134. plottingEdit.deactivate();
  135. plottingEdit.activate();
  136. }
  137. function editSymbol() {
  138. if (plottingEdit.editMode === SuperMap.Plot.EditMode.EDITCIRCUMRECTANGLE) {
  139. plottingEdit.setEditMode(SuperMap.Plot.EditMode.EDITCONTROLPOINT);
  140. } else {
  141. plottingEdit.setEditMode(SuperMap.Plot.EditMode.EDITCIRCUMRECTANGLE);
  142. }
  143. }
  144. //清空绘制
  145. function PlottingClear() {
  146. drawGraphicObject.deactivate();
  147. plottingEdit.deactivate();
  148. plottingLayer.removeAllFeatures();
  149. }
  150. function querySymbolLib() {
  151. drawGraphicObject.deactivate();
  152. if (!loadSymbolComplete) {
  153. return;
  154. }
  155. var key = document.getElementById("queryCriteria").value;
  156. if ("" === key) {
  157. return;
  158. }
  159. var result = [];
  160. for (var i = 0; i < symbolLibManager.getSymbolLibNumber(); i++) {
  161. var symbolLib = symbolLibManager.getSymbolLibByIndex(i);
  162. if (null !== symbolLib) {
  163. var tempResult = symbolLib.querySymbolbyKey(key);
  164. for (var j = 0; j < tempResult.length; j++) {
  165. result.push(tempResult[j]);
  166. }
  167. }
  168. }
  169. showResult(result);
  170. }
  171. function showResult(queryResult) {
  172. document.all.queryResult.innerHTML = "";
  173. if (0 === queryResult.length) {
  174. return;
  175. }
  176. //获取选中的对象
  177. var container = document.getElementById("queryResult");
  178. var table = document.createElement("table");
  179. drawNodeClick = function () {
  180. drawGraphicObject.deactivate();
  181. drawGraphicObject.handler.libID = this.libID;
  182. drawGraphicObject.handler.symbolCode = this.symbolCode;
  183. drawGraphicObject.handler.serverUrl = this.serverUrl;
  184. drawGraphicObject.activate();
  185. };
  186. var i = 0;
  187. var rowLength = (queryResult.length % 3 === 0) ? queryResult.length / 3 : queryResult.length / 3 + 1;
  188. for (var j = 0; j < rowLength; j++) {
  189. var tr = document.createElement("tr");
  190. for (var k = 0; k < 3; k++) {
  191. if (queryResult[i]) {
  192. //存储菜单信息
  193. var td = document.createElement("td");
  194. var drawNode = document.createElement("div");
  195. drawNode.onclick = drawNodeClick;
  196. drawNode.style.textAlign = "center";
  197. //设置标号的字体居中显示
  198. drawNode.style.color = "#000";
  199. //设置标号画上的id属性
  200. drawNode.id = queryResult[i].libID + "_" + queryResult[i].symbolCode;
  201. drawNode.libID = queryResult[i].libID;
  202. drawNode.symbolCode = queryResult[i].symbolCode;
  203. drawNode.serverUrl = serverUrl;
  204. var img = document.createElement("img");
  205. //查询symbol的title
  206. img.title = queryResult[i].symbolName + "_" + queryResult[i].symbolCode;
  207. img.src = queryResult[i].icon;
  208. //文本
  209. var text = document.createElement("div");
  210. //标号的SymbolName
  211. text.innerHTML = queryResult[i].symbolName;
  212. drawNode.appendChild(img);
  213. drawNode.appendChild(text);
  214. td.appendChild(drawNode);
  215. tr.appendChild(td);
  216. }
  217. i++;
  218. }
  219. table.appendChild(tr);
  220. }
  221. container.appendChild(table);
  222. }
  223. function removeAllFeatur() {
  224. plottingLayer.removeAllFeatures();
  225. }
  226. document.onmouseup = function (evt) {
  227. var evt = evt || window.event;
  228. if (evt.button === 2) {
  229. PlottingDrawCancel();
  230. return false;
  231. }
  232. evt.stopPropagation();
  233. }
  234. </script>
  235. </body>
  236. </html>