Ошибка тепловой карты листовки (динамические долготы и широты)

#javascript #leaflet #heatmap

#javascript #листовка #тепловая карта

Вопрос:

У меня есть 2-мерный массив location, который содержит широты и долготы, которые я хотел бы представить в своей тепловой карте. Я создал 2 дополнительных массива из location:

 for(var i=0;i<location.length;i  ){
  lat_array=location[i][0]
  long_array=location[i][1]
};

let testData = {
  max: 8,
  data: [{lat:lat_array, lng:long_array, count:8}]
}; //Count is random
     
let cfg={
  "radius": 40,
  "maxOpacity": 0.8,
  "scaleRadius": false,
  "useLocalExtrema": false,
  latField: 'lat',
  lngField:'lng',
  valueField:'count'
};

let heatmapLayer =  new HeatmapOverlay(cfg);

mymap.addLayer(heatmapLayer);
heatmapLayer.setData(testData);
 

Когда я запускаю страницу, я получаю сообщение об ошибке, в котором говорится, что долгота и широта не могут быть массивами, и я попытался запустить его с определенными значениями (lat_array [1], long_array [1]), и это сработало. Итак, я пытаюсь выяснить, как добавить все широты и долготы в массив местоположений, значения которых меняются каждый раз.

Ответ №1:

Ваш data формат неверен. У вас есть массив с одним объектом, чьи lat lng свойства и являются массивами lat s и lng s. Вам нужен массив объектов, каждый объект формата:

 [
  {
    lat: latitude_value,
    lng: longitude_value,
    count: count
  },
  {
    lat,
    lng,
    count,
  }
  { ... },
  ...
]
 

Я не уверен, откуда берутся ваши данные или в каком формате они находятся, но вам нужно манипулировать ими, чтобы перевести их в этот формат, чтобы тепловая карта работала должным образом.