それで、あなたが求めているのは、jsonから空間データを取得し、それを個別にロードされたcsvデータと結合する方法だと思いますか?
描いていたコロプレス マップで同様のことを行いました。基本的には、トポロジ要素 ID からデータ オブジェクトへのマップを作成し、トポロジ要素 ID を使用してルックアップを行い、実際に描画されたマップ要素に関連付けたいものを取得しました (このメソッドを使用して、fips 国コードに基づいてコロプレスの色を設定していました)。
したがって、基本的には、ホバーできるようにする各マップ要素に関連付けられた ID を持つようにマップを描画します。次に、mouseover/mouseout ハンドラーで、その ID を使用してツールチップに表示するデータを検索し、svg タイトル要素またはヒントを使用するか、svg テキスト要素またはツールチップを表示するものを手動で描画します。
ツールチップを描画するための便利なリファレンスを次に示し
ます。
フィドルから:
function mouseover(d) {
d3.select(this).append("text")
.attr("class", "hover")
.attr('transform', function(d){
return 'translate(5, -10)';
})
.text(d.name + ": " + d.id);
}
// Toggle children on click.
function mouseout(d) {
d3.select(this).select("text.hover").remove();
}
基本的には、SVG テキスト要素を追加し、ホバーされている要素の位置からオフセットします。
外部マップでデータを検索する方法のサンプルを次に示します。
// Update the bound data
data.svg.selectAll("g.map path").transition().duration(750)
.style("fill", function(d) {
// Get the feature data from the mapData using the feature code
var val = mapData[d.properties.code];
// Return the colorScale value for the state's value
return (val !== undefined)? data.settings.colorScale(val) : undefined;
});
データが静的な場合は、topojson ファイルに結合できます (使用している場合)。https://github.com/mbostock/topojson/wiki/Command-Line-Reference
クライアントがデータを変更する可能性があるため、データを個別に保持し、データが変更されるたびにマップを再描画して、色が更新されるようにしました。私のデータは topojson だったので、d.properties.code を使用してマップ データからフィーチャ ID にアクセスできました (上記で参照した topojson ツールを使用してコードを topojson ファイルに結合したためです...しかし、任意の一意の ID を使用できます)。あなたが持っている空間データファイルにあります)。