components_clientComputation.html 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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_spatialAnalysis'></title>
  9. <script type="text/javascript" src="../js/include-web.js"></script>
  10. <script type="text/javascript" include="iclient-leaflet-css,turf,xlsx" src="../../dist/leaflet/include-leaflet.js"></script>
  11. <style>
  12. .leaflet-popup,
  13. .leaflet-popup-content-wrapper {
  14. padding: 0;
  15. }
  16. .leaflet-popup-content {
  17. margin: 0;
  18. }
  19. </style>
  20. </head>
  21. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  22. <div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
  23. <div id="loading">....</div>
  24. <script type="text/javascript">
  25. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  26. var map, url = host + "/iserver/services/map-china400/rest/maps/ChinaDark";
  27. map = L.map('map', {
  28. crs: L.CRS.EPSG3857,
  29. center: [31.3677, 108.116],
  30. maxZoom: 20,
  31. minZoom: 3,
  32. zoom: 7
  33. });
  34. var baseLayer = L.supermap.tiledMapLayer(url).addTo(map);
  35. var control = L.control.layers().addTo(map).setPosition('topleft').addBaseLayer(baseLayer, 'baseLayer');
  36. // worker 路径,默认为 dist/leaflet/workers/TurfWorker.js
  37. var workerUrl = '../../dist/leaflet/workers/TurfWorker.js';
  38. var clientComputation = L.supermap.components.clientComputation(workerUrl).addTo(map);
  39. query();
  40. function query() {
  41. var queryUrl = "https://www.supermapol.com/iserver/services/map_ShiLiShuJu/rest/maps/中国历史5级以上地震_1900至2016@自然气候数据"
  42. var params = new SuperMap.QueryBySQLParameters({
  43. queryParams: {
  44. name: "中国历史5级以上地震_1900至2016@自然气候数据",
  45. attributeFilter: "SMID>0"
  46. }
  47. })
  48. L.supermap
  49. .queryService(queryUrl)
  50. .queryBySQL(params, function (serviceResult) {
  51. var result = L.Util.transform(serviceResult.result.recordsets[0].features, L.CRS.EPSG3857, L.CRS.EPSG4326);
  52. var resultLayer = L.geoJSON(result, {
  53. style: { fillColor: '#ff7373', color: '#ff7373', opacity: 1, fillOpacity: 0.8 },
  54. pointToLayer: function (geoJsonPoint, latLng) {
  55. return L.circleMarker(latLng, { radius: 6, color: '#ff7373', fillColor: '#ff7373' })
  56. }
  57. }).addTo(map);
  58. map.flyToBounds(resultLayer.getBounds());
  59. control.addOverlay(resultLayer, resources.text_spatialAnalysisLayerName);
  60. var setLayer = {
  61. 'layerName': resources.text_spatialAnalysisLayerName,
  62. 'layer': resultLayer,
  63. 'fields': ['震级', '深度', '经度', '纬度', 'SmID', 'SmX', 'SmY']
  64. };
  65. var clientComputationLayer = L.supermap.components.clientComputationLayer(setLayer);
  66. clientComputation.addLayer(clientComputationLayer);
  67. });
  68. }
  69. // 打开文件
  70. var openFile = L.supermap.components.openFile().addTo(map).setPosition('bottomleft');
  71. openFile.viewModel.on('openfilesucceeded', function (e) {
  72. var layer = L.geoJSON(e.result, {
  73. style: { fillColor: '#ff7373', color: '#ff7373', opacity: 1, fillOpacity: 0.8 }
  74. }).addTo(map);
  75. var setLayer = {
  76. 'layerName': e.layerName,
  77. 'layer': layer
  78. };
  79. map.flyToBounds(layer.getBounds());
  80. control.addOverlay(layer, e.layerName);
  81. var clientComputationLayer = L.supermap.components.clientComputationLayer(setLayer);
  82. clientComputation.addLayer(clientComputationLayer);
  83. })
  84. clientComputation.on("analysissucceeded", function (e) {
  85. control.addOverlay(e.layer, e.name);
  86. })
  87. clientComputation.on("layersremoved", function (e) {
  88. for (var i in e.layers) {
  89. control.removeLayer(e.layers[i]);
  90. }
  91. })
  92. </script>
  93. </body>
  94. </html>