Динамическое обновление слоя тепловой карты Google

#javascript #google-maps-api-3

#javascript #google-maps-api-3

Вопрос:

Прежде всего, я уже видел другие ответы о подобных проблемах, но это немного другое. Итак, у меня есть код javascript, который берет данные о долготе и широте из базы данных через php, я действительно могу собирать данные в формате, который выглядит как минимум правильно, но когда я пытаюсь обновить слой, ничего не отображается… будем признательны за любую помощь.

Вот код js: ОТРЕДАКТИРОВАН, ТЕПЕРЬ РАБОТАЕТ

 var Datas = [new google.maps.LatLng(32.7603282,46.343451)];
var pointArray = new google.maps.MVCArray(Datas);

$(document).ready(function() {
$('#gnome').change(function() {
    var inpval=$(this).val();
    $.ajax({
        url: 'php/query.php',
        type: 'POST',
        data: {valor : inpval},
        success: function(data) {
            while(Datas.length > 0) {
               Datas.pop();
            }
            //heatmap.setData(reboot(data));
            pointArray = new google.maps.MVCArray(reboot(data));
            initialize();
        }
    });
});
});

var config = {
"radius": 30,
"element": "heatmapEl",
"visible": true,
"opacity": 40,
"gradient": { 0.45: "rgb(0,0,255)", 0.55: "rgb(0,255,255)", 0.65: "rgb(0,255,0)", 0.95: "yellow", 1.0: "rgb(255,0,0)" }
};

function initialize() {
  var mapOptions = {
  zoom: 5,
 center: new google.maps.LatLng(32.7603282, 46.343451),
 mapTypeId: google.maps.MapTypeId.SATELLITE
};

 map = new google.maps.Map(document.getElementById('map-canvas'),
  mapOptions);

 pointArray = new google.maps.MVCArray(Datas);

 heatmap = new google.maps.visualization.HeatmapLayer({
data: pointArray
 });

heatmap.setMap(map);
}

function reboot(Ddatas){
alert(Ddatas);
var arraino = [];
for (a in Ddatas) {
arraino.push(new google.maps.LatLng(
    Ddatas[a][0],
    Ddatas[a][1]));
}
alert(arraino);
return (arraino);
 }


google.maps.event.addDomListener(window, 'load', initialize);
  

вполне рабочая ссылка http://testingme.altervista.org/progettolpw/index.php

Ответ №1:

Вы не создаете google.maps.Объекты LatLng корректны.

Это неверно (создается строка «новый google.maps.LatLng (xxx, гггг)», который не будет работать так, как вы ожидаете):

 for (a in Ddatas){
  arraino.push("new google.maps.LatLng(" Ddatas[a] ")");
}
  

Сделайте это вместо:

 for (a in Ddatas) {
    arraino.push(new google.maps.LatLng(
        Ddatas[a][0],
        Ddatas[a][1]));
}
  

рабочая скрипка