earthquakeHeatMap.html 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset='utf-8' />
  5. <title data-i18n="resources.title_ChinaEarthquakeHeatWGS84"></title>
  6. <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
  7. <script type="text/javascript" include="jquery,papaparse" src="../js/include-web.js"></script>
  8. <style>
  9. body {
  10. margin: 0;
  11. padding: 0;
  12. }
  13. #map {
  14. position: absolute;
  15. top: 0;
  16. bottom: 0;
  17. width: 100%;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <div id='map'></div>
  23. <script type="text/javascript" include='mapbox-gl-enhance' src="../../dist/mapboxgl/include-mapboxgl.js"></script>
  24. <script>
  25. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  26. var map = new mapboxgl.Map({
  27. container: 'map',
  28. style: {
  29. "version": 8,
  30. "sources": {
  31. "raster-tiles": {
  32. "type": "raster",
  33. "tiles": [host + '/iserver/services/map-world/rest/maps/World'],
  34. "rasterSource":"iserver",
  35. "tileSize": 256
  36. }
  37. },
  38. "layers": [{
  39. "id": "simple-tiles",
  40. "type": "raster",
  41. "source": "raster-tiles",
  42. "minzoom": 0,
  43. "maxzoom": 22
  44. }]
  45. },
  46. crs: mapboxgl.CRS.EPSG4326,
  47. center: [112, 37.94],
  48. zoom: 3
  49. });
  50. map.on('load', function () {
  51. $.get("../data/chinaEarthquake.csv", function (response) {
  52. var dataObj = Papa.parse(response, {
  53. skipEmptyLines: true,
  54. header: true
  55. });
  56. var data = dataObj.data;
  57. var geojson = {
  58. "type": "FeatureCollection",
  59. "features": []
  60. };
  61. for (var i = 0; i < data.length; i++) {
  62. var item = data[i];
  63. var date = new Date(item.date);
  64. var year = date.getFullYear();
  65. //2w+地震数据
  66. if (year > 2000 && year < 2015) {
  67. var feature = {
  68. "type": "feature",
  69. "geometry": {
  70. "type": "Point",
  71. "coordinates": []
  72. },
  73. "properties": {
  74. "value": parseFloat(item.level)
  75. }
  76. };
  77. feature.geometry.coordinates = [parseFloat(item.X), parseFloat(item.Y)];
  78. geojson.features.push(feature);
  79. }
  80. }
  81. map.addSource('earthquakes', {
  82. "type": "geojson",
  83. "data": geojson
  84. });
  85. map.addLayer({
  86. "id": "earthquakes-heat",
  87. "type": "heatmap",
  88. "source": "earthquakes",
  89. "maxzoom": 9,
  90. "paint": {
  91. "heatmap-weight": [
  92. "interpolate",
  93. ["linear"],
  94. ["get", "level"],
  95. 0, 0,
  96. 6, 1
  97. ],
  98. "heatmap-intensity": [
  99. "interpolate",
  100. ["linear"],
  101. ["zoom"],
  102. 0, 1,
  103. 9, 3
  104. ],
  105. "heatmap-color": [
  106. "interpolate",
  107. ["linear"],
  108. ["heatmap-density"],
  109. 0, "rgba(33,102,172,0)",
  110. 0.2, "rgb(103,169,207)",
  111. 0.4, "rgb(209,229,240)",
  112. 0.6, "rgb(253,219,199)",
  113. 0.8, "rgb(239,138,98)",
  114. 1, "rgb(178,24,43)"
  115. ],
  116. "heatmap-radius": [
  117. "interpolate",
  118. ["linear"],
  119. ["zoom"],
  120. 0, 2,
  121. 9, 20
  122. ],
  123. "heatmap-opacity": [
  124. "interpolate",
  125. ["linear"],
  126. ["zoom"],
  127. 7, 1,
  128. 9, 0
  129. ],
  130. }
  131. });
  132. map.addLayer({
  133. "id": "earthquakes-point",
  134. "type": "circle",
  135. "source": "earthquakes",
  136. "minzoom": 7,
  137. "paint": {
  138. "circle-radius": [
  139. "interpolate",
  140. ["linear"],
  141. ["zoom"],
  142. 7, [
  143. "interpolate",
  144. ["linear"],
  145. ["get", "level"],
  146. 1, 1,
  147. 6, 4
  148. ],
  149. 16, [
  150. "interpolate",
  151. ["linear"],
  152. ["get", "level"],
  153. 1, 5,
  154. 6, 50
  155. ]
  156. ],
  157. "circle-color": [
  158. "interpolate",
  159. ["linear"],
  160. ["get", "level"],
  161. 1, "rgba(33,102,172,0)",
  162. 2, "rgb(103,169,207)",
  163. 3, "rgb(209,229,240)",
  164. 4, "rgb(253,219,199)",
  165. 5, "rgb(239,138,98)",
  166. 6, "rgb(178,24,43)"
  167. ],
  168. "circle-stroke-color": "white",
  169. "circle-stroke-width": 1,
  170. "circle-opacity": [
  171. "interpolate",
  172. ["linear"],
  173. ["zoom"],
  174. 7, 0,
  175. 8, 1
  176. ]
  177. }
  178. });
  179. });
  180. });
  181. </script>
  182. </body>
  183. </html>