TypeError: b.lat is not a function - Heatmap Layer

TypeError: b.lat is not a function - Heatmap Layer

我一直在努力弄清楚为什么我的加热层会出现上述问题。我在座位上看到的答案解决了不正确的 LatLng 设置,但是我的标记的 LatLng 数组工作得很好。

我也尝试过添加权重,尽管 api 说它是可选的。

var map;

function initMap(resultSet) {
  map = new google.maps.Map(document.getElementById('maps'), {
    center: {
        lat: 40.8173,
        lng: -96.7005
    },
    zoom: 16,
    mapTypeId: 'satellite'
  });`

  var labels = [];
  var locations = [];

  for (var i = 0; i < resultSet.length; i++) {
    labels.push(resultSet[i][0]);
    locations.push({
        lat: parseFloat(resultSet[i][3]),
        lng: parseFloat(resultSet[i][4])
    });
    if (data[0] == '1') {
        var marker = new google.maps.Marker({
            position: locations[i],
            map: map,
            title: labels[i]
        });
        marker.setMap(map);
    }
  }

  if (data[0] == '2') {
    var heatmap = new google.maps.visualization.HeatmapLayer({
        data: locations,
    });
    heatmap.setMap(map);
  }
}

HeatmapLayer is one of the remaining places you can't use a google.maps.LatLngLiteral for a position, it must be a google.maps.LatLng 对象。 (你得到的错误是因为匿名对象 LatLngLiteral 没有 .lat() 方法,它有一个 .lat 属性)。

变化:

for (var i = 0; i < resultSet.length; i++) {
    labels.push(resultSet[i][0]);
    locations.push({
        lat: parseFloat(resultSet[i][3]),
        lng: parseFloat(resultSet[i][4])
    });
    if (data[0] == '1') {
        var marker = new google.maps.Marker({
            position: locations[i],
            map: map,
            title: labels[i]
        });
        marker.setMap(map);
    }
}

收件人:

for (var i = 0; i < resultSet.length; i++) {
    labels.push(resultSet[i][0]);
    locations.push(new google.maps.LatLng(
        parseFloat(resultSet[i][3]),
        parseFloat(resultSet[i][4])
    ));
    if (data[0] == '1') {
        var marker = new google.maps.Marker({
            position: locations[i],
            map: map,
            title: labels[i]
        });
        marker.setMap(map);
    }
}