我有以下代码,它将首先加载地图,但是,任何进一步的“runHeatmap()”调用错误:
这是来自 Firbug (firefox) 的错误:
类型错误:g[bx] 未定义
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();
});
- 带有卫星的谷歌地图加载正常。
- 当套接字打开时,浏览器接收到 'coordArr' 事件并且该数据正确推送并生成如下所示的热图:
- 然后,当该函数调用“runHeatmap();”时,套接字会接收到“坐标”事件和正确的数据;它会导致错误。
我应该破坏热图并重新编写它吗?似乎相当浪费资源,我只是使用错误的方法来更新现有的热图吗?