rl.html 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <title>热力图示例</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  7. <style type="text/css">
  8. html, body {
  9. width: 100%;
  10. height: 100%;
  11. }
  12. * {
  13. margin: 0px;
  14. padding: 0px;
  15. }
  16. button {
  17. width: 100px;
  18. border: 1px solid #555;
  19. }
  20. #container {
  21. height: 100%;
  22. }
  23. [title="到腾讯地图查看此区域"] {
  24. display: none !important;
  25. }
  26. #container div div div span {
  27. display: none !important;
  28. }
  29. </style>
  30. <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&libraries=visualization&key=MU5BZ-H2ARW-6CLR6-RGB4A-BDRB3-AZFKV"></script>
  31. <script>
  32. window.onload = function(){
  33. // 创建地图
  34. var map = new qq.maps.Map(document.getElementById("container"), {
  35. // mapTypeId:qq.maps.MapTypeId.HYBRID,
  36. center: new qq.maps.LatLng(29.439652,88.285456),//(北纬,东经)中心坐标
  37. zoom:10, //缩放大小
  38. mapStyleId: 'style1'
  39. });
  40. // 创建热力图对象
  41. var heat = new qq.maps.visualization.Heat({
  42. map: map, // 必填参数,指定显示热力图的地图对象
  43. radius: 30, // 辐射半径,默认为20
  44. });
  45. // 获取热力数据
  46. var data = getHeatData();
  47. // x, y 表示二维坐标; value表示强弱值
  48. // var data = [ {lat: 471, lng: 277, value: 25}, {lat: 438, lng: 375, value: 97}, {lat: 373, lng: 19, value: 71}, {lat: 473, lng: 42, value: 63}, {lat: 463, lng: 95, value: 97}, {lat: 590, lng: 437, value: 34}, {lat: 377, lng: 442, value: 66}, {lat: 171, lng: 254, value: 20}, {lat: 6, lng: 582, value: 64}, {lat: 387, lng: 477, value: 14}, {lat: 300, lng: 300, value: 80}];
  49. // 向热力图传入数据
  50. heat.setData(data);
  51. // 监听button事件,更改热力图配置参数
  52. document.getElementById("setOptions").addEventListener("click", function(e) {
  53. var target = e.target;
  54. switch (target.id) {
  55. case "show":
  56. if (heat.visible) {
  57. heat.hide(); // 显示热力图
  58. } else {
  59. heat.show(); // 隐藏热力图
  60. }
  61. break;
  62. case "data":
  63. data = getHeatData(10);
  64. heat.setData(data); // 重置热力图数据
  65. break;
  66. case "radius":
  67. let radius = heat.getRadius(); // 获取辐射半径
  68. heat.setRadius(radius + 10); // 设置辐射半径
  69. break;
  70. case "gradient":
  71. let gradient = heat.getGradient(); // 获取渐变色
  72. gradient[1.0] = "#fff"; // 强度最大为白色
  73. heat.setGradient(gradient); // 设置渐变色
  74. break;
  75. case "opacity":
  76. let opacity = heat.getOpacity();
  77. opacity = [0.1, 0.8]; // 透明度变化范围为0.2~0.8
  78. heat.setOpacity(opacity); // 设置透明度变化范围
  79. break;
  80. case "destroy":
  81. heat.destroy();
  82. default:
  83. }
  84. });
  85. function getHeatData(cnt, max, min) {
  86. let data = []; //29.439652,88.285456
  87. let center = {
  88. lat: 29.439652,
  89. lng: 88.285456
  90. };
  91. cnt = cnt || 100;
  92. max = max || 100;
  93. min = min || 0;
  94. for (let index = 0; index < cnt; index++) {
  95. let r = Math.random();
  96. let angle = Math.random() * Math.PI * 2;
  97. let heatValue = Math.random() * (max - min) + min;
  98. data.push({
  99. lat: center.lat + r * Math.sin(angle),
  100. lng: center.lng + r * Math.cos(angle),
  101. value: heatValue
  102. });
  103. }
  104. return {
  105. max: max,
  106. min: min,
  107. data: data
  108. };
  109. }
  110. }
  111. </script>
  112. </head>
  113. <body>
  114. <div id="container"></div>
  115. <div id="setOptions">
  116. <button id="show" hidden>显示/隐藏</button>
  117. <button id="data" hidden>更新数据</button>
  118. <button id="radius" hidden>改变半径</button>
  119. <button id="gradient" hidden>改变颜色</button>
  120. <button id="opacity" hidden>改变透明度</button>
  121. <button id="destroy" hidden>销毁对象</button>
  122. </div>
  123. </body>
  124. </html>