Ошибка типа: b.lat не является функцией - слой Heatmap - PullRequest
0 голосов
/ 23 октября 2019

Я застрял, пытаясь понять, почему я получаю вышеуказанную проблему для моего теплового слоя. Ответы, которые я видел при поиске адреса, неправильная настройка 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);
  }
}

1 Ответ

0 голосов
/ 23 октября 2019

HeatmapLayer - это одно из оставшихся мест, которое вы не можете использовать google.maps.LatLngLiteral для позиции, оно должно быть 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...