kernelDensityJobService.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  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_kernelDensityJobService"></title>
  9. <script type="text/javascript" include="jquery,bootstrap,widgets" src="../js/include-web.js"></script>
  10. </head>
  11. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  12. <div id="map" style="width: 100%;height:100%"></div>
  13. <script type="text/javascript" src="../../dist/leaflet/include-leaflet.js"></script>
  14. <script type="text/javascript">
  15. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  16. var layer, processingUrl = host + "/iserver/services/distributedanalyst/rest/v1/jobs",
  17. mapURL = host + "/iserver/services/map-world/rest/maps/World",
  18. map = L.map('map', {
  19. crs: L.CRS.EPSG4326,
  20. center: [40.75, -73.95],
  21. maxZoom: 18,
  22. zoom: 12
  23. }),
  24. info = L.control({
  25. position: 'topright'
  26. });
  27. L.supermap.tiledMapLayer(mapURL).addTo(map);
  28. info.onAdd = function () {
  29. var popup = L.DomUtil.create('div');
  30. popup.style.width = '300px';
  31. popup.innerHTML = "<div class='panel panel-default'>" +
  32. "<div class='panel-heading'>" +
  33. "<h3 class='panel-title'>" + resources.text_kernelDensityJobService + "</h3>" +
  34. "</div>" +
  35. "<div class='panel-body'>" +
  36. "<div class='input-group'>" +
  37. "<span class='input-group-addon'>" + resources.text_inputData + "<span title='" + resources.text_requiredField +
  38. "' style='color: red;'> * </span> </span>" +
  39. "<input id='datasetName' type='text' class='form-control' value='samples_newyork_taxi_2013-01_14k'/>" +
  40. "</div><p>" +
  41. "<div class='input-group'>" +
  42. "<span class='input-group-addon'>" + resources.text_analysisMethod + "<span title='" + resources.text_requiredField +
  43. "' style='color: red;'> * </span> </span>" +
  44. "<div>" +
  45. "<select class='form-control' id='method' name='clientType'>" +
  46. "<option value='0' selected='selected'>" + resources.text_simpleDenAnalyst + "</option>" +
  47. "<option value='1'>" + resources.text_input_value_densityAnalyst + "</option>" +
  48. "</select></div>" +
  49. "</div><p>" +
  50. "<div class='input-group'>" +
  51. "<span class='input-group-addon'>" + resources.text_meshSurfaceType + "<span title='" + resources.text_requiredField +
  52. "' style='color: red;'> * </span></span>" +
  53. "<select class='form-control' id='meshType' name='clientType'>" +
  54. "<option value='0' selected='selected'>" + resources.text_4grid + "</option>" +
  55. "<option value='1'>" + resources.text_6grid + "</option>" +
  56. "</select>" +
  57. "</div><p>" +
  58. "<div class='input-group'>" +
  59. "<span class='input-group-addon'>" + resources.text_weightField + "</span>" +
  60. "<input id='fields' type='text' class='form-control' value='col7,col8'/>" +
  61. "</div><p>" +
  62. "<div class='input-group'>" +
  63. "<span class='input-group-addon'>" + resources.text_analysisRange + "  </span>" +
  64. "<input id='query' type='text' class='form-control' value='-74.150, 40.550, -73.750, 40.950'/>" +
  65. "</div><p>" +
  66. "<div class='input-group'>" +
  67. "<span class='input-group-addon'>" + resources.text_gridSize + "<span title='" + resources.text_requiredField +
  68. "' style='color: red;'> * </span> </span>" +
  69. "<input id='resolution' type='text' class='form-control' value='80'/>" +
  70. "</div><p>" +
  71. "<div class='input-group'>" +
  72. "<span class='input-group-addon'>" + resources.text_gridSizeUnit + "</span>" +
  73. "<select class='form-control' id='meshSizeUnit' name='clientType'>" +
  74. "<option value='Meter' selected='selected'>Meter</option>" +
  75. "<option value='Kilometer'>Kilometer</option>" +
  76. "<option value='Yard'>Yard</option>" +
  77. "<option value='Foot'>Foot</option>" +
  78. "<option value='Mile'>Mile</option></select></div><p>" +
  79. "<div class='input-group'>" +
  80. "<span class='input-group-addon'>" + resources.text_searchRadius + "<span title='" + resources.text_requiredField +
  81. "' style='color: red;'> * </span> </span>" +
  82. "<input id='radius' type='text' class='form-control' value='300'/>" +
  83. "</div><p>" +
  84. "<div class='input-group'>" +
  85. "<span class='input-group-addon'>" + resources.text_searchRadiusUnit + "</span>" +
  86. "<select class='form-control' id='radiusUnit' name='clientType'>" +
  87. "<option value='Meter' selected='selected'>Meter</option>" +
  88. "<option value='Kilometer'>Kilometer</option>" +
  89. "<option value='Yard'>Yard</option>" +
  90. "<option value='Foot'>Foot</option>" +
  91. "<option value='Mile'>Mile</option></select></div><p>" +
  92. "<div class='input-group'>" +
  93. "<span class='input-group-addon'>" + resources.text_areaUnit + "</span>" +
  94. "<select class='form-control' id='areaUnit' name='clientType'>" +
  95. "<option value='SquareMile' selected='selected'>SquareMile</option>" +
  96. "<option value='Hectare'>Hectare</option>" +
  97. "<option value='Are'>Are</option>" +
  98. "<option value='Acre'>Acre</option>" +
  99. "<option value='SquareFoot'>SquareFoot</option>" +
  100. "<option value='SquareYard'>SquareYard</option>" +
  101. "<option value='SquareMeter'>SquareMeter</option></select></div><p>" +
  102. "<div align='right'>" +
  103. "<input type='button' id='btn' class='btn btn-primary' value='" + resources.text_analyst + "'/>" +
  104. "</div></div></div>";
  105. handleMapEvent(popup, this._map);
  106. return popup;
  107. };
  108. info.addTo(map);
  109. var processingService = new L.supermap.processingService(processingUrl, {
  110. withCredentials: window.isLocal
  111. });
  112. SuperMap.SecurityManager.registerToken(processingUrl, window.exampleToken);
  113. function getQuery() {
  114. if ($('#query').val() === "") {
  115. return "";
  116. }
  117. var query = [];
  118. $('#query').val().split(',').map(function (el) {
  119. query.push(parseFloat(el));
  120. });
  121. return L.latLngBounds(L.latLng(query[1], query[0]), L.latLng(query[3], query[2]));
  122. }
  123. $('#btn').on('click', function () {
  124. if ($('#msg_container')[0]) {
  125. $('#msg_container').remove();
  126. }
  127. widgets.loader.showLoader();
  128. if (map && layer) {
  129. map.removeLayer(layer);
  130. }
  131. var kernelDensityJobParameter = new SuperMap.KernelDensityJobParameter({
  132. datasetName: $('#datasetName').val(),
  133. resolution: $('#resolution').val(),
  134. method: $('#method option:selected').attr('value'),
  135. meshType: $('#meshType option:selected').attr('value'),
  136. fields: $('#fields').val(),
  137. query: getQuery(),
  138. radius: $('#radius').val(),
  139. meshSizeUnit: $('#meshSizeUnit option:selected').attr('value'),
  140. radiusUnit: $('#radiusUnit option:selected').attr('value'),
  141. areaUnit: $('#areaUnit option:selected').attr('value'),
  142. });
  143. processingService.addKernelDensityJob(kernelDensityJobParameter, function (serviceResult) {
  144. if (serviceResult.error) {
  145. widgets.loader.removeLoader();
  146. var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error.code;
  147. widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
  148. return;
  149. }
  150. serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
  151. if (info.serviceType === 'RESTMAP') {
  152. SuperMap.FetchRequest.get(info.serviceAddress + '/maps').then(function (
  153. response) {
  154. return response.json();
  155. }).then(function (result) {
  156. var mapUrl = result[0].path;
  157. layer = L.supermap.tiledMapLayer(mapUrl, {
  158. noWrap: true,
  159. transparent: true
  160. });
  161. layer.addTo(map);
  162. widgets.loader.removeLoader();
  163. });
  164. }
  165. });
  166. });
  167. });
  168. function handleMapEvent(div, map) {
  169. if (!div || !map) {
  170. return;
  171. }
  172. div.addEventListener('mouseover', function () {
  173. map.dragging.disable();
  174. map.scrollWheelZoom.disable();
  175. map.doubleClickZoom.disable();
  176. });
  177. div.addEventListener('mouseout', function () {
  178. map.dragging.enable();
  179. map.scrollWheelZoom.enable();
  180. map.doubleClickZoom.enable();
  181. });
  182. $("#model").on('shown.bs.modal', function () {
  183. map.dragging.disable();
  184. map.scrollWheelZoom.disable();
  185. map.doubleClickZoom.disable();
  186. });
  187. $("#model").on('hidden.bs.modal', function () {
  188. map.dragging.enable();
  189. map.scrollWheelZoom.enable();
  190. map.doubleClickZoom.enable();
  191. })
  192. }
  193. </script>
  194. </body>
  195. </html>