我目前有一个翻译位置和对象的对象。我在他的变换函数中:
.attr("transform", function(d,i)
{return "translate ("+ arc[i].centroid() +")" + inner[d.Country];})
;
.text(function(d) {return d.Country;})
我想知道是否可以在文本功能中定义仅收集国家数据一次&不是多次?
这是一个让我的观点更清晰的方法:http://jsfiddle.net/xwZjN/41/
任何正确方向的指针都将受到赞赏
答案 0 :(得分:0)
要绘制国家/地区名称,您将遍历具有重复国家/地区名称的节点,因此您将获得多个名称。也许你可以对节点进行快速转换并迭代它。这样的事情可行。
首先创建一个返回唯一元素的函数。这是我在SO中找到的:
function unique(a) {
var s = a.sort();
var r = [];
for (var i = 0; i < a.length - 1; i++) {
if (s[i + 1] != s[i]) {
r.push(s[i]);
}
}
return r;
}
然后使用以下内容作为数据元素。
unique(nodes.map(function(d) { return d.Country }))
这样做,首先,将nodes数组转换为国家/地区名称数组,其次,只获取非重复的国家/地区名称。由于数据现在位于d.Country
,您必须在场时更改功能才能删除d
。
希望它有所帮助...