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