0
我正在地图上按维度归类意大利城市对(更多的人 - >大半径)
这里预览(检查是否有完整的代码)http://www.danielepennati.com/prove/mapping/ita_popolazione.html
当你在地图上放大我缩放半径和如果您使用选择在地图的左边改变一年更新为新数据的圆半径...如果地图不放大一切顺利
如果它工作正常d3如何正确更新缩放地图中的svg圆半径?
s = d3.event.scale; //s is defined in the main function
g.selectAll('circle')
.attr("r", function(d) { return raggioCittà(rateByIdCF[d.id][anno])/s; })
地图缩放我尝试设置缩放半径(如果我记录的半径值正确),但在圆形元素的“r”值中未缩放的圆圈显然太大了。
这是更新年选择了一圈代码:
g.selectAll(".punto_comun")
.data(topojson.feature(base, base.objects.com2011_g).features)
.attr('fill', function(d) {
if(rateByIdCF[d.id]){
if(raggioCittà(rateByIdCF[d.id][anno]) < 4){ return '#0042b0'}
}
return '#ff0000';
})
.attr("r", function(d) {
if(rateByIdCF[d.id]){
//check if map is scaled, if yes scale the radius down
if(s){ return raggioCittà(rateByIdCF[d.id][anno]/s); }
//if not use the standard radius
return raggioCittà(rateByIdCF[d.id][anno]);
}
})
我真的不明白为什么它不工作的权利......也许我失去了一些东西有关变焦的行为。
我真的很感激任何建议。
感谢
丹尼尔
感谢您的回答。我删除了s和t参数(它们出现错误...),但没有任何变化。我添加一些日志,所以你可以看到我可以正确地传递s值,并且通过“raggioCittà(rateByIdCF [d.id] [anno]/s)计算得出的r”是正确的。试一试:放大并更改年份,只需检查控制台日志。再次感谢拉尔斯! – danipen
你的更新函数有一个拼写错误 - 'raggioCittà(rateByIdCF [d.id] [anno]/s)'应该是'raggioCittà(rateByIdCF [d.id] [anno])/ s'。 –
没办法......非常感谢拉斯!我一整天都没有看到这个错字!现在一切正常。再次感谢 – danipen