ブラシに含まれるアイテムもマップに表示されるように、マップにリンクされている d3.js を使用して垂直タイムラインを作成しようとしています。http://code.google.com/p/timemap/のようなものですが、SIMILE の代わりに d3 を使用し、水平ではなく垂直のタイムラインを使用します。
時間範囲、凡例、目盛り、およびブラシを表す垂直バーを含む svg を正常に作成できます。ブラシ イベントを処理する関数が呼び出され、ブラシの y 軸の開始と停止を含む範囲を取得できます。ここまでは順調ですね...
ブラシで覆われたデータムを取得するにはどうすればよいですか? エクステント範囲内のアイテムを探して最初のデータ セットを反復処理することはできますが、それはハッキリしています。データムをブラシで強調表示する d3 固有の方法はありますか?
var data = [
{
start: 1375840800,
stop: 1375844400,
lat: 0.0,
lon: 0.0
}
];
var min = 1375833600; //Aug 7th 00:00:00
var max = 1375919999; //Aug 7th 23:59:59
var yScale = d3.time.scale.utc().domain([min, max]).range([0, height])
var brush = d3.svg.brush().y(yScale).on("brush", brushmove);
var timeline = d3.select("#myDivId").append("svg").attr("width", width).attr("height", height);
timeline.selectAll("rect")
.data(data)
.enter().append("rect")
.attr("x", function(datum, index) {return index * barSize})
.attr("y", function(datum, index) {return yScale(datum.start)})
.attr("height", function(datum, index) {return yScale(datum.end) - yScale(datum.start)})
.attr("width", function() {return barSize})
timeline.append("g")
.attr("class", "brush")
.call(brush)
.selectAll("rect")
.attr("width", width);
function brushmove() {
var extent = brush.extent();
//How do I get the datums contained inside the extent????
}