heatMapLayer.html 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  8. <title data-i18n="resources.title_heatMapLayer"></title>
  9. <script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
  10. <script type="text/javascript" src="../../dist/leaflet/include-leaflet.js"></script>
  11. <style type="text/css">
  12. body {
  13. margin: 0;
  14. overflow: hidden;
  15. background: #fff;
  16. width: 100%;
  17. height: 100%
  18. }
  19. #map {
  20. position: absolute;
  21. width: 100%;
  22. height: 100%;
  23. }
  24. #toolbar {
  25. position: absolute;
  26. top: 20px;
  27. right: 10px;
  28. width: 300px;
  29. text-align: center;
  30. z-index: 100;
  31. border-radius: 4px;
  32. }
  33. </style>
  34. </head>
  35. <body>
  36. <div id="map"></div>
  37. <script type="text/javascript">
  38. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  39. var map, heatMapLayer,
  40. url = host + "/iserver/services/map-world/rest/maps/World";
  41. map = L.map('map', {
  42. preferCanvas: true,
  43. crs: L.CRS.EPSG4326,
  44. center: {lon: 0, lat: 0},
  45. zoom: 2
  46. });
  47. L.supermap.tiledMapLayer(url).addTo(map);
  48. initEditView();
  49. function initEditView() {
  50. var infoView = L.control({position: 'topright'});
  51. infoView.onAdd = function () {
  52. var me = this;
  53. me._div = L.DomUtil.create('div', 'editPane');
  54. me._div.style.width = '236px';
  55. me._div.innerHTML = "<div id='toolbar' class='panel panel-primary'>" +
  56. "<div class='panel-heading'>" +
  57. "<h5 class='panel-title text-center'>" + resources.text_fastHeatMapLayer + "</h5></div>" +
  58. "<div class='panel-body content'>" +
  59. "<div class='panel'>" +
  60. "<div class='input-group'>" +
  61. "<span class='input-group-addon'>" + resources.text_countsDraw + "</span>" +
  62. "<input type='text' class='form-control' id='heatNums' value='200'/>" +
  63. "</div>" +
  64. "</div>" +
  65. "<div class='panel'>" +
  66. "<div class='input-group'>" +
  67. "<span class='input-group-addon' >" + resources.text_radius + "</span>" +
  68. "<input class='form-control' style='width: 50px' value='50' id='heatradius'/>" +
  69. "<select class='form-control' style='width:auto' id='radiusUnit'>" +
  70. "<option value='px'>px</option>" +
  71. "<option value='"+ resources.text_degree+"' >" + resources.text_degree + "</option>" +
  72. "</select>" +
  73. "</div>" +
  74. "</div>" +
  75. "<input type='button' class='btn btn-default' value='" + resources.btn_startDraw + "' onclick ='createHeatPoints()'/>&nbsp; &nbsp;" +
  76. "<input type='button' class='btn btn-default' value='" + resources.text_input_value_clear + "' onclick ='clearHeatPoints()' />" +
  77. "</div>" +
  78. "</div>";
  79. handleMapEvent(me._div, me._map);
  80. return me._div;
  81. };
  82. infoView.addTo(map);
  83. }
  84. function handleMapEvent(div, map) {
  85. if (!div || !map) {
  86. return;
  87. }
  88. div.addEventListener('mouseover', function () {
  89. map.dragging.disable();
  90. map.scrollWheelZoom.disable();
  91. map.doubleClickZoom.disable();
  92. });
  93. div.addEventListener('mouseout', function () {
  94. map.dragging.enable();
  95. map.scrollWheelZoom.enable();
  96. map.doubleClickZoom.enable();
  97. });
  98. }
  99. function createHeatPoints() {
  100. clearHeatPoints();
  101. heatMapLayer = L.supermap.heatMapLayer(
  102. "heatMap",
  103. {
  104. "map": map,
  105. "id": "heatmap",
  106. "radius": 45,
  107. // 设置图层透明度:(参数方式)
  108. // "opacity": 0.5,
  109. //featureWeight指定以哪个属性值为热力权重值创建热力图:
  110. "featureWeight": "value",
  111. }
  112. );
  113. var num = parseInt(document.getElementById('heatNums').value);
  114. var radius = parseInt(document.getElementById('heatradius').value);
  115. var unit = document.getElementById("radiusUnit").value;
  116. //resources.text_degree 表示 id=radiusUnit 选项的第一选项值
  117. if (resources.text_degree == unit) {
  118. //热力半径单位使用地理单位
  119. heatMapLayer.useGeoUnit = true;
  120. } else {
  121. //热力半径单位不使用用地理单位
  122. heatMapLayer.useGeoUnit = false;
  123. }
  124. heatMapLayer.radius = radius;
  125. var features = [];
  126. for (var i = 0; i < num; i++) {
  127. var geometry = L.point(Math.random() * 340 - 170, Math.random() * 160 - 80);
  128. var attributions = {
  129. "value": Math.random() * 9,
  130. };
  131. features[i] = L.supermap.heatMapFeature(geometry, attributions);
  132. //参数为geojson格式:
  133. /*features[i] = {
  134. "type": "feature",
  135. "geometry": {
  136. "type": "Point",
  137. "coordinates": [
  138. Math.random() * 340 - 170,
  139. Math.random() * 160 - 80]
  140. },
  141. "properties": {
  142. "value": Math.random() * 9,
  143. }
  144. };*/
  145. }
  146. //参数为geojson格式:
  147. /* var heatPoints = {
  148. "type": "FeatureCollection",
  149. "features": features
  150. };
  151. //加载geoJson格式数据:
  152. heatMapLayer.addFeatures(heatPoints);*/
  153. //加载heatMapFeature格式数据:
  154. heatMapLayer.addFeatures(features);
  155. heatMapLayer.addTo(map);
  156. // map.addLayer(heatMapLayer);
  157. //设置图层透明度:(函数方式)
  158. // heatMapLayer.setOpacity(0.5);
  159. }
  160. function clearHeatPoints() {
  161. if (heatMapLayer) {
  162. map.removeLayer(heatMapLayer);
  163. heatMapLayer = null;
  164. }
  165. }
  166. </script>
  167. </body>
  168. </html>