plot_symbolGeometricQuery.html 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  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_symbolGeometricQuery"></title>
  9. </head>
  10. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  11. <div id="toolbar" class="panel panel-primary"
  12. style=" position: absolute;top: 10px;right: 10px;text-align: center;z-index: 9999;border-radius: 4px;">
  13. <div class='panel-heading' id="panelheading">
  14. <h5 class='panel-title text-center' data-i18n="resources.title_symbolGeometricQuery"></h5>
  15. </div>
  16. <div class='panel-body content' id="panelbodycontent">
  17. <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_polygon" onclick="drawPolygon()"/>
  18. <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_circle" onclick="drawCircle()"/>
  19. <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_rectangle" onclick="drawRectangle()"/>
  20. <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_cancel" onclick="cancle()"/>
  21. </div>
  22. </div>
  23. <div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
  24. <script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
  25. <script type="text/javascript" include="iclient-plot-leaflet" src="../../dist/leaflet/include-leaflet.js"></script>
  26. <script type="text/javascript">
  27. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  28. var url = host + "/iserver/services/map-china400/rest/maps/China_4326";
  29. var serverUrl = host + "/iserver/services/plot-jingyong/rest/plot/";
  30. var map = L.map('map', {
  31. preferCanvas: true,
  32. crs: L.CRS.EPSG4326,
  33. center: [35,104],
  34. maxZoom: 18,
  35. zoom: 3
  36. });
  37. L.supermap.tiledMapLayer(url).addTo(map);
  38. var plottingLayer = L.supermap.plotting.plottingLayer("plot", serverUrl);
  39. plottingLayer.addTo(map);
  40. var queryPlottingLayer = L.supermap.plotting.plottingLayer("plot", serverUrl);
  41. queryPlottingLayer.addTo(map);
  42. var drawControl = L.supermap.plotting.drawControl(queryPlottingLayer);
  43. drawControl.addTo(map);
  44. var plotting = L.supermap.plotting.getControl(map, serverUrl);
  45. function loadSymbolLib() {
  46. var symbolLibManager = plotting.getSymbolLibManager();
  47. symbolLibManager.libIDs = [421];
  48. symbolLibManager.on(SuperMap.Plot.Event.initializecompleted,symbolLibInitializeCompleted);
  49. symbolLibManager.initializeAsync();
  50. }
  51. function symbolLibInitializeCompleted() {
  52. var libID = 421;
  53. var code = 20100;
  54. var symbolData = null;
  55. SuperMap.Plot.PlottingUtil.getDataFromServer(serverUrl, libID, code, null, {}, null,
  56. function (result) {
  57. symbolData = result.result;
  58. //绘制点标号
  59. plotSymbol(libID, code, symbolData);
  60. }, null);
  61. }
  62. function plotSymbol(libID, code, symbolData) {
  63. var dotSymbol;
  64. for (var i = 0; i < 20; i++) {
  65. var latlngs = [];
  66. var x = Math.random() * 30+107;
  67. var y = Math.random() * 30+32;
  68. latlngs.push(L.latLng(y, x));
  69. plottingLayer.createSymbol(libID, code, latlngs,null,{}, {symbolData: symbolData, serverUrl: serverUrl});
  70. }
  71. for (var i = 0; i < 20; i++) {
  72. var latlngs = [];
  73. var x = -Math.random() * 30+107;
  74. var y = Math.random() * 30+32;
  75. latlngs.push(L.latLng(y, x));
  76. plottingLayer.createSymbol(libID, code, latlngs,null,{}, {
  77. symbolData: symbolData,
  78. serverUrl: serverUrl
  79. });
  80. }
  81. for (var i = 0; i < 20; i++) {
  82. var latlngs = [];
  83. var x = Math.random() * 30+107;
  84. var y = -Math.random() * 30+32;
  85. latlngs.push(L.latLng(y, x));
  86. plottingLayer.createSymbol(libID, code, latlngs,null,{}, {
  87. symbolData: symbolData,
  88. serverUrl: serverUrl
  89. });
  90. }
  91. for (var i = 0; i < 20; i++) {
  92. var latlngs = [];
  93. var x = -Math.random() * 30+107;
  94. var y = -Math.random() * 30+32;
  95. latlngs.push(L.latLng(y, x));
  96. plottingLayer.createSymbol(libID, code, latlngs,null,{}, {
  97. symbolData: symbolData,
  98. serverUrl: serverUrl
  99. });
  100. }
  101. }
  102. //设置选择区域的线色
  103. function setDefualtStyle() {
  104. var defualtStyle = plotting.getDefaultStyle();
  105. defualtStyle.defaultFlag = true;
  106. defualtStyle.lineColor = "#00FF00";
  107. }
  108. function drawPolygon() {
  109. setDefualtStyle();
  110. resetGeometryStyle();
  111. drawControl.handler.disable();
  112. drawControl.handler.libID = 0;
  113. drawControl.handler.code = 32;
  114. drawControl.handler.serverUrl = serverUrl;
  115. drawControl.handler.enable();
  116. }
  117. function drawCircle() {
  118. setDefualtStyle();
  119. resetGeometryStyle();
  120. drawControl.handler.disable();
  121. drawControl.handler.libID = 0;
  122. drawControl.handler.code = 29;
  123. drawControl.handler.serverUrl = serverUrl;
  124. drawControl.handler.enable();
  125. }
  126. function drawRectangle() {
  127. setDefualtStyle();
  128. resetGeometryStyle();
  129. drawControl.handler.disable();
  130. drawControl.handler.libID = 0;
  131. drawControl.handler.code = 26;
  132. drawControl.handler.serverUrl = serverUrl;
  133. drawControl.handler.enable();
  134. }
  135. //重置选择的区域内的标号的线色
  136. var queryResult = [];
  137. function resetGeometryStyle() {
  138. for (var i = 0; i < queryResult.length; i++) {
  139. queryResult[i].setStyle({color: "#FF0000"});
  140. }
  141. queryResult = [];
  142. }
  143. function clearStatus() {
  144. drawControl.handler.disable();
  145. //删除查询的几何图形
  146. }
  147. //取消查询状态
  148. function cancle() {
  149. resetGeometryStyle();
  150. clearStatus();
  151. }
  152. drawControl.on(SuperMap.Plot.Event.featureadded, function (event) {
  153. var layer = event.feature;
  154. var latLngs = layer.getLatLngs();
  155. var symbolType = layer.symbolType;
  156. queryPlottingLayer.removeFeatures(layer);
  157. if (symbolType === SuperMap.Plot.SymbolType.ARBITRARYPOLYGONSYMBOL) {
  158. queryResult = L.supermap.plotting.query(map).getGObjectsInPolygon(latLngs);
  159. }
  160. if (symbolType === SuperMap.Plot.SymbolType.CIRCLESYMBOL) {
  161. var radius = Math.sqrt(Math.pow(latLngs[1].lng - latLngs[0].lng, 2) + Math.pow(latLngs[1].lat - latLngs[0].lat, 2));
  162. queryResult = L.supermap.plotting.query(map).getGObjectsInCircle(latLngs[0], radius);
  163. }
  164. if (symbolType === SuperMap.Plot.SymbolType.RECTANGLESYMBOL) {
  165. queryResult = L.supermap.plotting.query(map).getGObjectsInRect(latLngs[0], latLngs[1]);
  166. }
  167. if (queryResult && queryResult.length !== 0) {
  168. for (var i in queryResult) {
  169. queryResult[i].setStyle({color: "#0000FF"});
  170. }
  171. }
  172. plottingDrawCancel();
  173. });
  174. //取消标绘
  175. function plottingDrawCancel() {
  176. drawControl.handler.disable();
  177. }
  178. window.onload = function () {
  179. loadSymbolLib();
  180. };
  181. $(document).ready(function(){
  182. $('#panelheading').click(function(){
  183. $('#panelbodycontent').toggle();
  184. });
  185. });
  186. </script>
  187. </body>
  188. </html>