singleObjectQueryJobService.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  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_singleObjectQueryJobService"></title>
  9. <script type="text/javascript" src="../../dist/ol/include-ol.js"></script>
  10. <style>
  11. .ol-popup {
  12. position: absolute;
  13. top: 10px;
  14. right: 10px;
  15. }
  16. .ol-draw {
  17. position: absolute;
  18. top: 70px;
  19. left: 5px;
  20. display: none;
  21. }
  22. </style>
  23. </head>
  24. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  25. <div id="map" style="width: 100%;height:100%"></div>
  26. <div id="popup" class="ol-popup" style='width:350px'>
  27. <div class="panel panel-default">
  28. <div class='panel-heading'>
  29. <h3 class='panel-title' data-i18n="resources.title_singleObjectQueryJobService"></h3>
  30. </div>
  31. <div class='panel-body'>
  32. <div class='input-group'>
  33. <span class='input-group-addon'><span data-i18n="resources.text_sourceDataset"></span><span
  34. data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span> </span>
  35. <input id='datasetName' type='text' class='form-control' value='samples_processing_newyorkZone_R' /></div>
  36. <p></p>
  37. <div class='input-group'>
  38. <span class='input-group-addon'><span data-i18n="resources.text_queryObjectMode"></span><span
  39. data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span></span>
  40. <select class='form-control' id='queryMode' name='queryMode'>
  41. <option value='DATASET' selected data-i18n="resources.text_dataset"></option>
  42. <option value='GEOJSON'>Geojson</option>
  43. </select>
  44. </div>
  45. <p></p>
  46. <div class='input-group' id='datasetDiv'>
  47. <span class='input-group-addon'><span data-i18n="resources.text_queryObjectDataset"></span><span
  48. data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span></span>
  49. <input id='datasetQuery' type='text' class='form-control' value='samples_processing_singleRegion_R' />
  50. </div>
  51. <p></p>
  52. <div class='input-group'>
  53. <span class='input-group-addon'><span data-i18n="resources.text_boundsQueryMode"></span><span
  54. data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span></span>
  55. <select class='form-control' id='mode' name='mode'>
  56. <option value='CONTAIN' data-i18n="resources.text_contain"></option>
  57. <option value='CROSS' data-i18n="resources.text_cross"></option>
  58. <option value='DISJOINT' data-i18n="resources.text_disjoint"></option>
  59. <option value='IDENTITY' data-i18n="resources.text_Identity"></option>
  60. <option value='INTERSECT' selected data-i18n="resources.text_intersect"></option>
  61. <option value='OVERLAP' data-i18n="resources.text_overlap"></option>
  62. <option value='TOUCH' data-i18n="resources.text_touch"></option>
  63. <option value='WITHIN' data-i18n="resources.text_within"></option>
  64. </select>
  65. </div>
  66. <p></p>
  67. <div align='right'>
  68. <input type='button' id='btn' class='btn btn-primary' data-i18n="[value]resources.btn_query" />
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. <div id="draw" class="ol-draw">
  74. <div class="btn-group" role="group" aria-label="...">
  75. <button id="drawPolygon" value='Polygon' type="button" class="btn btn-default" data-i18n="resources.text_input_value_drawPolygon"></button>
  76. <br>
  77. <button id="clear" value='Clear' type="button" class="btn btn-default" data-i18n="resources.text_input_value_clear"></button>
  78. </div>
  79. </div>
  80. <script type="text/javascript" include="bootstrap,jquery,widgets" src="../js/include-web.js"></script>
  81. <script type="text/javascript">
  82. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  83. var layer, draw,
  84. processingsUrl = host + "/iserver/services/distributedanalyst/rest/v1/jobs",
  85. mapURL = host + "/iserver/services/map-world/rest/maps/World",
  86. map = new ol.Map({
  87. target: 'map',
  88. controls: ol.control.defaults({
  89. attributionOptions: {
  90. collapsed: false
  91. }
  92. })
  93. .extend([new ol.supermap.control.Logo()]),
  94. view: new ol.View({
  95. center: [-73.95, 40.75],
  96. zoom: 12,
  97. projection: 'EPSG:4326',
  98. multiWorld: true
  99. })
  100. });
  101. map.addLayer(new ol.layer.Tile({
  102. source: new ol.source.TileSuperMapRest({
  103. url: mapURL,
  104. }),
  105. }));
  106. var processingService = new ol.supermap.ProcessingService(processingsUrl, {
  107. withCredentials: window.isLocal
  108. });
  109. var source = new ol.source.Vector({
  110. wrapX: false
  111. });
  112. var vector = new ol.layer.Vector({
  113. source: source
  114. });
  115. map.addLayer(vector);
  116. var info = new ol.control.Control({
  117. element: document.getElementById('draw')
  118. });
  119. info.setMap(map);
  120. map.addControl(info);
  121. $("#queryMode").change(function () {
  122. var queryMode = $(this).val();
  123. if (queryMode === "DATASET") {
  124. $('#draw').hide();
  125. $('#datasetDiv').show();
  126. }
  127. if (queryMode === "GEOJSON") {
  128. $('#draw').show();
  129. $('#datasetDiv').hide();
  130. }
  131. });
  132. var buttons = $('.btn-group').children();
  133. buttons.map(function (key) {
  134. var value = buttons[key].value;
  135. if (value === 'Clear') {
  136. $(buttons[key]).on('click', function () {
  137. clearInteraction();
  138. source.clear();
  139. draw = undefined;
  140. });
  141. return;
  142. }
  143. $(buttons[key]).on('click', function () {
  144. clearInteraction();
  145. source.clear();
  146. draw = new ol.interaction.Draw({
  147. source: source,
  148. type: buttons[key].value,
  149. snapTolerance: 20
  150. });
  151. draw.on('drawend', function () {
  152. map.removeInteraction(draw);
  153. });
  154. map.addInteraction(draw);
  155. });
  156. });
  157. function clearInteraction() {
  158. if (draw) {
  159. map.removeInteraction(draw);
  160. }
  161. }
  162. initForm();
  163. bindClick();
  164. function initForm() {
  165. var info = new ol.control.Control({
  166. element: popup
  167. });
  168. info.setMap(map);
  169. map.addControl(info);
  170. }
  171. function bindClick() {
  172. $('#btn').on('click', function () {
  173. if ($('#msg_container')[0]) {
  174. $('#msg_container').remove();
  175. }
  176. widgets.loader.showLoader();
  177. if (map && layer) {
  178. map.removeLayer(layer);
  179. }
  180. queryJobs();
  181. });
  182. }
  183. SuperMap.SecurityManager.registerToken(processingsUrl, window.exampleToken);
  184. function queryJobs() {
  185. var points, queryParam;
  186. if ($("#queryMode").val() === "DATASET") {
  187. queryParam = $('#datasetQuery').val();
  188. points = [];
  189. }
  190. if ($("#queryMode").val() === "GEOJSON") {
  191. if (!draw) {
  192. widgets.loader.removeLoader();
  193. widgets.alert.showAlert(resources.msg_createFailed + "<br>" + resources.msg_drawQueryBounds, false);
  194. return;
  195. } else {
  196. points = draw.a[0];
  197. queryParam = "";
  198. }
  199. }
  200. var singleObjectQueryJobsParameter = new SuperMap.SingleObjectQueryJobsParameter({
  201. datasetName: $('#datasetName').val(),
  202. datasetQuery: queryParam,
  203. geometryQuery: points,
  204. mode: $('#mode option:selected').attr('value')
  205. });
  206. processingService.addQueryJob(singleObjectQueryJobsParameter, function (serviceResult) {
  207. if (serviceResult.error) {
  208. widgets.loader.removeLoader();
  209. var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error.code;
  210. widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
  211. return;
  212. }
  213. serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
  214. if (info.serviceType === 'RESTMAP') {
  215. SuperMap.FetchRequest.get(info.serviceAddress + '/maps').then(function (
  216. response) {
  217. return response.json();
  218. }).then(function (result) {
  219. var mapUrl = result[0].path;
  220. new ol.supermap.MapService(mapUrl).getMapInfo(function (mapInfo) {
  221. layer = new ol.layer.Tile({
  222. source: new ol.source.ImageSuperMapRest(ol.source
  223. .ImageSuperMapRest.optionsFromMapJSON(
  224. mapUrl, mapInfo.result))
  225. });
  226. map.addLayer(layer);
  227. widgets.loader.removeLoader();
  228. });
  229. });
  230. }
  231. });
  232. });
  233. }
  234. </script>
  235. </body>
  236. </html>