我正在使用d3(更像是学习使用)来创建一个等值区域图。我已经管理加载我的数据和geojson对象并获得要显示的地图,但我想添加一些过渡和用户选择其数据的能力。
这是我到目前为止的一个例子(感谢github和Mike Bostock的好主人观众):
http://bl.ocks.org/4131166;和 http://gist.github.com/4131166
我设法通过将关联的类更改为组来改变颜色,但我将其换成了Cynthia Brewer颜色的js版本,因为我想在它们之间进行转换。我还希望在选择不同的“乐队”时改变颜色。
我认为我的问题在于updateValues函数 - 它做得太多了。它正在加载数据,绘制多边形并一次性填充颜色。
是否可以绘制多边形,然后将颜色关联到一个单独的函数中?
我曾经想过添加一个:
.attr(“id”,function(d){return d.id;})
指向绘制路径的语句,然后以某种方式使用它来链接到单独语句中的数据,但我不太确定如何实现这一点 - 我想以某种方式检索每个路径的id并链接到数据......?
任何帮助将不胜感激。即使这是关于如何改进我的代码的建议。在相关的情况下,我总是很乐意遵守最佳实践。
答案 0 :(得分:4)
d3的核心是解决方案。只要您d3.selectAll( ... ).data( ... )
获得的是选择。
要影响选择中的每个节点,您可以链接各种d3函数。
还有两个其他特殊功能可用于子选择:enter()
用于新节点&对于不再存在的节点,exit()
。
如果更新基础数据,则调用顶级d3.selectAll( ... ).data( ... )
,并根据这三个链更新DOM节点:选择(所有节点),输入(添加节点),&退出(节点被删除)。
因此,在选择链上设置颜色,而不是输入,并且它们将在不重新创建的情况下进行更新。