我是crossfilter的新手,我正在尝试“计算”每个位置(LatLng)的元素数量,然后将其用作我的d3圈子的半径:
d3.tsv("DH_Doigv2.tsv", function (data) {
var ndx = crossfilter(data);
var all = ndx.groupAll();
dc.dataCount(".dc-data-count")
.dimension(ndx)
.group(all);
data.forEach(function (d) {
d.year = +d.Date
d.id = d.Item;
d.LatLng = new L.LatLng(+d.SoundLat, +d.SoundLon);
});
var stateCount = ndx.dimension(function (d) {return d.LatLng;});
var stateCountGroup = stateCount.group();
var dataTablesm = dc.dataTable("#data-table-sm");
var allDim = ndx.dimension(function(d) {return d;});
var feature = g.selectAll("circle")
.data(data)
.enter().append("circle")
.style("stroke", "black")
.style("opacity", .6)
.style("fill", "red")
.attr("r", function(d) {
console.log(stateCountGroup.all().value);
return stateCountGroup.all()[d].value*5; })
.attr("transform", function(d){
//console.log(d.values[0].LatLng, d.values.length);
var coor = map.latLngToLayerPoint(d.LatLng);
return "translate(" +
coor.x + "," +
coor.y + ")";
})
但是我在控制台中收到“未定义”消息以及“TypeError:stateCountGroup.all(...)[d]未定义”。这应该是Leaflet地图上的d3层。最后,我希望能够点击圆圈并让另一个区域只显示那些特定的项目(jpeg),如下所示:http://photogrammar.yale.edu/labs/crossfilter/california/虽然我没有使用chloropleth,而是我正在使用Leaflet地图这个:https://github.com/austinlyons/dcjs-leaflet-untappd他有数据表驱动一切,我想让地图驱动一切。
与此问题相关:Not all d3 points are showing in correct position on leaflet map