updateMapColor
の関数内で、ワールドマップは入力年の値に基づいて色を変更します。私はupdateMapColor
と呼ぶことで、色の変化をアニメーション化しようとしていますが、動作しません。forループでコールバック関数でアニメーションを実行
setInterval
を使用する必要があるのはなぜですか?誰かが根本的な問題を説明してくれますか?
d3.select('body').append('button').attr({
class: "button",
id: "animateMap"
})
.text("Animate the map")
.on("click", function (d) {
for (i = 0; i < yearArray.length; i++) {
updateMapColor[yearArray[i]]
}
})
var updateMapColor = function (y) {
year = y;
var rankingList = {}
coloredWorldMap.transition().duration(700).attr('fill', function (d) {
a = d;
x = d3.values(tennis).filter(function (d) {
return (d.DATE == year)
})
rankingList = x;
x = d3.values(x).filter(function (d) {
return (d.COUNTRY_ID == a.id)
})
if (x.length != 0) {
if (x[0].COUNT == 0) {
return "#fff"
}
else {
return colorScale(x[0].COUNT)
}
}
else {
return '#fff'
}
return colorScale(x[0].COUNT)
})