0

我有以下代码,它将首先加载地图,但是,任何进一步的“runHeatmap()”调用错误:

这是来自 Firbug (firefox) 的错误:

类型错误:g[bx] 未定义

https://maps.gstatic.com/cat_js/intl/en_us/mapfiles/api-3/14/0/%7Bmain,visualization%7D.js/eval/seq/6

3号线

这是来自 Chrome 的错误:

未捕获的类型错误:无法读取未定义的属性“NaN”

(匿名函数)

H.forEach %7Bmain,可视化%7D.js:28

情商

TQ

H.aa

(匿名函数)%7Bmain,visualization%7D.js:34

编码:

var map = null, heatmap = null, heatmapData = [];

map = new google.maps.Map(document.getElementById('map'), {
    center: new google.maps.LatLng(20, 12),
    zoom: 3,
    mapTypeId: google.maps.MapTypeId.SATELLITE
});

function runHeatmap() {
    var pointArray = new google.maps.MVCArray(heatmapData);
    if (!heatmap) {
        heatmap = new google.maps.visualization.HeatmapLayer({
            data: pointArray,
            map: map
        });
    } else {
        heatmap.setData(pointArray);
    }
}

//receives [["34.3565","-29.23434"],["-3.4857","64.3984"]]
socket.on('coordArr', function(d){
    if (d.length > 0) {
        var i=0;
        while(i < d.length) {
            var lat = d[i][0].trim();
            var lng = d[i][1].trim();
            heatmapData.push(new google.maps.LatLng(lat,lng));
            i++;
        }
        runHeatmap();
    }
});

//receives ["-8.284374","94.2837"]
socket.on('coord', function (d) {
    var lat = d[0].trim();
    var lng = d[1].trim();
    heatmapData.push(new google.maps.LatLng(lat,lng));
    runHeatmap();
});
  1. 带有卫星的谷歌地图加载正常。
  2. 当套接字打开时,浏览器接收到 'coordArr' 事件并且该数据正确推送并生成如下所示的热图: 在此处输入图像描述
  3. 然后,当该函数调用“runHeatmap();”时,套接字会接收到“坐标”事件和正确的数据;它会导致错误。

我应该破坏热图并重新编写它吗?似乎相当浪费资源,我只是使用错误的方法来更新现有的热图吗?

4

0 回答 0