Google maps 在D3中使用Googlemaps HeatmapLayer

Google maps 在D3中使用Googlemaps HeatmapLayer,google-maps,d3.js,heatmap,Google Maps,D3.js,Heatmap,我正在尝试使用谷歌地图热图层在我的D3可视化。我随后在D3中创建了一个谷歌地图层,并使用我的数据文件添加了标记。然后我尝试扩展它,使用谷歌地图的热图图层,而不是简单的标记圆圈。我无法找出这段代码中的问题是什么,并且我不理解得到UncaughtTypeError的错误:无法读取undefined的属性'NaN' 7.676,6.68,39.8,39.7,41.75741142,-87.71717129299,5.46,14.46,14.4,14.2,14.2,14.2,14.2\41414141

我正在尝试使用谷歌地图热图层在我的D3可视化。我随后在D3中创建了一个谷歌地图层,并使用我的数据文件添加了标记。然后我尝试扩展它,使用谷歌地图的热图图层,而不是简单的标记圆圈。我无法找出这段代码中的问题是什么,并且我不理解得到UncaughtTypeError的错误:无法读取undefined的属性'NaN'

7.676,6.68,39.8,39.7,41.75741142,-87.71717129299,5.46,14.46,14.4,14.2,14.2,14.2,14.2\414141414141414141414141417.7171299,5.46,4.46,14.46,14.4,14.2,14.2,14.2,14.2,14.2,14.7 7878787878787878787878787878787878787878787856,56,56,56,5,5,46,46,14.46,14.46,14.46,14,14,14,14,14,14.2,14,14.2,14.2,14.2,14,14.2,14.2,14.2,14,14.2,14.2,14.2,14.2,14.2,14,14,14,14 1054,5.12,31.6\n41.946373,-7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141417.7.7.7.7.7.7.7.7.7.7.7.7.7.7 7 7.7.7.7.7 7 7 7.7.7.7 7.7.7.7.7.7.7.7 7 7 7 7 7 7.7.7 7 7 7 7 7 7 7 7 7 7 7.7 7.7 7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 1.9,33.3\n41.906481,-87.671373,5.28,18.4\n41.741148,-87.54045,,,\n41.891964、-87.611603、\n41.858136、-87.616055、\n41.857797、-87.685806、\n41.881172、-87.686359、\n41.954626、-87.645247、,, var colorScale=d3.scale.linear.range['蓝色','黄色']; var tooltip=d3.selectmap.appenddiv .attr类,工具提示 .不透明度,0; //创建谷歌地图… var map=new google.maps.Mapd3.selectmap.node{ 缩放:10, 中心:新谷歌。地图。LatLng41.83379085476929,-87.73212559320208, mapTypeId:google.maps.mapTypeId.TERRAIN }; 数据=d3.csv.parsecsvData var heatmapData=[]; data.foreachd函数{ heatmapData.pushnew google.maps.LatLngd.lat,d.lng; }; var heatmap=new google.maps.visualization.HeatmapLayer{ 数据:热图数据, 地图:地图 }; var max=d3.maxdata,函数d{return d.temp1;}; var min=d3.mindata,函数d{return d.temp1;}; 如果max>0&&min>0{min=-max;}
ifmax我从您的代码中得到的错误是:

未捕获的TypeError:无法读取未定义的属性“NaN”

您的代码中有一个输入错误。你正在通过d.lat/d.lon;但该规范要求d.lat/d.lng。将代码更改为使用d.lon或将对象更改为包含d.lng。您的代码不一致,它在热图中使用d.lng,在d3代码中使用d.lon

使用d.lng更新代码段,并删除隐藏热图的d3标记:

4.676,6.68,39.8\n 41.75741142,-87.717129299,5.46,14.46,14.2\n 41.784141414141414141414141417.88497,-7.7878784141414141414141414141417.7129299,5.46,6.46,14.46,14.46,14.14.2\14.2\4141787878787878787878787878787878787856,5,5,5,5,7.46,14.46,14.46,14.46,14.14.14.2\14.2\14.2\414141414141414141417.7.7.7.7.7.2\41417878787878787878787878787878787878787878787878787878787878787878787878787856,46,1054,5.12,31.6\n41.946373,-7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141417.7.7.7.7.7.7.7.7.7.7.7.7.7.7 7 7.7.7.7.7 7 7 7.7.7.7 7.7.7.7.7.7.7.7 7 7 7 7 7 7.7.7 7 7 7 7 7 7 7 7 7 7 7.7 7.7 7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 1.9,33.3\n41.906481,-87.671373,5.28,18.4\n41.741148,-87.54045,,,\n41.891964、-87.611603、\n41.858136、-87.616055、\n41.857797、-87.685806、\n41.881172、-87.686359、\n41.954626、-87.645247、,, var colorScale=d3.scale.linear.range['蓝色','黄色']; var tooltip=d3.selectmap.appenddiv .attr类,工具提示 .不透明度,0; //创建谷歌地图… var map=new google.maps.Mapd3.selectmap.node{ 缩放:10, 中心:new google.maps.LatLng41.83379085476929,-87.73212559320208, mapTypeId:google.maps.mapTypeId.TERRAIN }; 数据=d3.csv.parsecsvData var heatmapData=[]; data.foreachd函数{ heatmapData.pushnew google.maps.LatLngd.lat,d.lng; }; var heatmap=new google.maps.visualization.HeatmapLayer{ 数据:热图数据, 地图:地图 }; var max=d3.maxdata,函数d{ 返回d.temp1; }; var min=d3.mindata,函数D{ 返回d.temp1; }; 如果最大值>0&&最小值>0{ 最小值=-最大值; } 如果最大值<0&&min<0{ max=-min; } 色阶域[min,max]; var overlay=new google.maps.OverlayView; //将覆盖添加到地图时添加容器。 overlay.onAdd=函数{ var layer=d3.selectthis.getPanes.overlymousetarget.appenddiv .attr类,节点; overlay.draw=函数{ /*var projection=this.getProjection, 填充=10; var marker=layer.selectAllsvg .数据 .每一次转变 .enter.appendsvg .每一次转变 .等级、标记 .onmouseover,函数d{ 工具提示.转换 .持续时间200 .不透明度,1; tooltip.htmld.node\u id .styleleft,d3.event.pageX+px .styletop,d3.event.pageY+px; } .onmouseout,函数{ 工具提示.转换 .持续时间500 .不透明度,0; }; 标记。附加圆 attrr先生,7岁 .attrcx,填充 .消耗、填充 .stylefill,函数{ 如果 d、 temp1{ 返回0.temp1; }否则 不返回任何值; }; marker.appendtext .attrx,填充+7 .attry,padding .attrdy,.31em .textfunctiond{ 返回d.temp1; }; */ 功能转换{ d=新的google.maps.LatLngd.lat,d.lng; d=投影。从LatlngToDivPixeld; 返回d3。选择此选项 .styleleft,d.x-填充+px .styletop,d.y-填充+px; } }; }; overlay.setMapmap; html, 身体 地图{ 宽度:100%; 身高:100%; 保证金:0; 填充:0; } .节点, .节点svg{ 位置:绝对位置; } .节点svg{ 宽度:60px; 高度:20px; 右边填充:100px; 字体:10px无衬线; } .节点圆{ 笔画:黑色; 笔画宽度:1px; } .工具提示{ 位置:绝对位置; 文本对齐:居中; 最小宽度:200; 宽度:自动; 最小高度:25; 高度:自动; 填充:2px; 字体:10px无衬线; 背景:rgba0,0,0,0.8; 颜色:fff; 边界:0px; 边界半径:8px; 指针事件:无; }