Slider Range 不会在 HTML+JAVASCRIPT 中更新热图

问题描述 投票:0回答:0

我正在尝试用数组中的一些数据更新热图,我希望它在每次移动滑块时更新

PM25_centru
的值/梯度,但它似乎不起作用。谁能帮我这个?该代码功能齐全(没有错误),但它只是没有做它需要做的事情。不幸的是,我不能分享 API 代码。

<!DOCTYPE html>
<html>

<head>
  <title></title>
  <style>
    #map-container {
      display: flex;
    }
    
    #map {
      height: 400px;
      width: 70%;
      order: 2;
    }
    
    #sidebar {
      background-color: white;
      height: 400px;
      width: 30%;
      padding: 20px;
      order: 1;
    }
  </style>
  <script src="https://maps.googleapis.com/maps/api/js?key=GOOGLE_MAP_API&callback=initMap&libraries=visualization" async defer></script>
</head>

<body>
  <input type="range" id="rangeInput" min="0" max="12" step="1" value="0">
  <div id="map-container">
    <div id="map"></div>
    <div id="sidebar">
      <h2>Date</h2>
      <p id="selectedDataText"></p>
    </div>
  </div>

  <script type="text/javascript">
    var map, heatmap, data;

    var selectedDataText = document.getElementById('selectedDataText');

    function updateSelectedDataText(value) {
      selectedDataText.textContent = value.toString();
    }

    function initMap() {
      map = new google.maps.Map(document.getElementById('map'), {
        zoom: 13,
        center: {
          lat: 47.8368,
          lng: 25.8756
        },
        mapTypeId: google.maps.MapTypeId.ROADMAP
      });

      heatmap = new google.maps.visualization.HeatmapLayer({
        map: map,
        radius: 200
      });
      loadData();

      document.getElementById('rangeInput').addEventListener('input', changeHeatmap);
    }
    var database = [{
        Data_si_ora_: '2023-05-18T13:00:00.000Z',
        PM25_centru: 418
      },
      {
        Data_si_ora_: '2023-05-18T14:00:00.000Z',
        PM25_centru: 416
      },
      {
        Data_si_ora_: '2023-05-18T15:00:00.000Z',
        PM25_centru: 417
      },
      {
        Data_si_ora_: '2023-05-18T16:00:00.000Z',
        PM25_centru: 416
      },
      {
        Data_si_ora_: '2023-05-18T17:00:00.000Z',
        PM25_centru: 418
      },
      {
        Data_si_ora_: '2023-05-18T18:00:00.000Z',
        PM25_centru: 419
      },
      {
        Data_si_ora_: '2023-05-18T19:00:00.000Z',
        PM25_centru: 415
      },
      {
        Data_si_ora_: '2023-05-18T20:00:00.000Z',
        PM25_centru: 416
      },
      {
        Data_si_ora_: '2023-05-18T21:00:00.000Z',
        PM25_centru: 415
      },
      {
        Data_si_ora_: '2023-05-18T22:00:00.000Z',
        PM25_centru: 410
      },
      {
        Data_si_ora_: '2023-05-18T23:00:00.000Z',
        PM25_centru: 413
      },
      {
        Data_si_ora_: '2023-05-19T00:00:00.000Z',
        PM25_centru: 414
      },
      {
        Data_si_ora_: '2023-05-19T01:00:00.000Z',
        PM25_centru: 418
      }
    ];

    function loadData() {
      data = database;
      updateHeatmap(0)
    }

    function changeHeatmap() {
      var rangeInput = document.getElementById('rangeInput');
      var selectedValue = parseInt(rangeInput.value);
      updateHeatmap(selectedValue);
    }

    function updateHeatmap(index) {
      var selectedData = data[index]['PM25_centru'];
      updateSelectedDataText(data[index]['Data_si_ora_']);
      var heatmapData = [];

      for (var i = 0; i <= 1; i++) {
        var latLng = new google.maps.LatLng(47.8368, 25.8756);
        var weight = selectedData;

        heatmapData.push({
          location: latLng,
          weight: weight
        });
        heatmap.setData(heatmapData);
      }

    }
  </script>

</body>

</html>

javascript google-maps heatmap
© www.soinside.com 2019 - 2024. All rights reserved.