d3.geo的工具提示.圆形鼠标按下总是显示CSV文件的最后一行
Tooltip on d3.geo.circle mousedown always displays last line of CSV file
我正在用一些d3.geo构建一个地图。圈上它(与d3.v3.min.js)。一旦你点击了一个圆圈,它所附加的数据就会显示在一个自定义的CSS工具提示中。然而,即使d3.geo。圆圈在地图上显示,工具提示总是显示我的CSV文件的最后一行,无论你点击哪个圆圈。
下面是我的代码片段:
d3.json("json/world-countries.json", function(collection) {
var countries = svg.selectAll("path")
.data(collection.features)
.enter().append("path")
.attr("class", "boundary")
.attr("id", function(d) {return d.id;})
.attr("d", path);
d3.csv("csv/object-data.csv", function(data) {
var dots = svg.selectAll("dots")
.data(data)
.enter().append("path")
.attr("class", "dots")
.datum(function(d) {return d3.geo.circle().origin([ d.longitude, d.latitude ]).angle(d.radius)();})
.attr("d", path);
data.forEach(function(d) {
id = +d.id;
name = d.name;
dots.on("mousedown", function(d) {
d3.select("#ObjectID").html('<div class="box-title"><strong>Object ID</strong></div>'
+ '<table><tr><td>Project name</td><td>' + name);
CSV文件如下所示:
id,longitude,latitude,radius,name
0,2.343333,48.848611,1,Paris
1,-0.126267,51.507548,0.987230769,London
我检查了console.log(id);总是得到最后一条线,无论哪个位置。圈用户点击。这意味着dot .on("mousedown")总是返回最后一行,而不是与相关圆圈对应的一行。同时,如果我使用nations .on("mousedown")并检查console.log(d.d ID),我将在地图上获得我将要点击的国家的ID。
以下是我的问题:
为什么它隐式地看起来像是为地理JSON文件而不是为CSV文件工作?与d3。
我如何使这个工作?例如,我如何确保一旦用户单击一个圆圈,显示与此精确圆圈对应的数据,而不是列表中的最后一个?
从概念上讲,我错过了什么?
好了,我找到解决办法了。
首先,您需要创建一个变量并将数据推入其中。
var projectdata = [];
data.forEach(function(e,i) {
projectdata.push({
id : e.id,
name : e.name,});});
则需要返回每个点的id,并使其与相关数据相对应。
var dots = svg.selectAll("dots")
.data(data)
.enter().append("path")
.attr("id", function(d) {return d.id;})
.attr("class", "dots")
.datum(function(d) {return d3.geo.circle().origin([ d.longitude, d.latitude ]).angle(d.radius)();})
.attr("d", path)
.on("mousedown", function(d) {
var i = this.id-1;
d3.select("#ObjectID").html('<div class="box-title"><strong>Object ID</strong></div>'
+ '<table><tr><td>Project name</td><td>' + projectdata[i].name);
这就成功了!将发布结果一旦它是在线的。特别感谢@elias和@pwetosaurus,这些问题让我改变了对这个问题的看法。
相关文章:
- AngularJS分为多个文件-只有最后一个文件有效
- 从路径中删除最后一个文件夹
- 只有最后一个文件是通过迭代形式.submit()操作下载的
- 如何知道哪个是最后一个带有读取条目的文件条目
- PHP 使用 file_get_contents 从.txt文件中获取最后五个单词
- 使用在线优化器组合多个JavaScript文件后 最后使用哪个名称
- XUL - 火狐最后下载的文件
- (Javascript)如何提取当前URL的最后一部分 - 没有文件扩展名
- 配置 karma 以最后加载测试文件
- gulp-concat:如何确保文件最后连接
- 如何从另一个网站上的文本文件的最后一行获取数据
- Javascript:替换.txt文件中的最后一行
- javascript中的对象卡在csv文件的最后一行
- 如何使最后一个焦点文件应该在javascript中刷新html页面后进行焦点处理
- Javascript,剥离/忽略CSV文件的最后一行
- JavaScript Regex替换文件扩展名之前的最后一个下划线和数字
- d3.geo的工具提示.圆形鼠标按下总是显示CSV文件的最后一行
- 如何在javascript中从文件夹路径中获取最后一个文件夹名称
- fs.createReadStream只读取node.js文件的最后一行
- JSON文件只显示最后一个条目,尽管id不同