【发布时间】:2015-05-09 01:29:07
【问题描述】:
我有一张 D3 的美国地图,上面画着圆圈。当我调整窗口大小时,地图消失并出现 D3 条形图。
当我刷新页面并从图表开始然后切换到地图时,圆圈显得很大。
我还注意到州边界线也更粗。
我在两个函数中构建了地图和条形图:map() 和 mobileChart()。两者都在我的脚本底部执行。
这是我绘制圆圈的代码:
map
.append("circle")
.attr("class", "bubbles")
.attr("cx", coordinates[0])
.attr("cy", coordinates[1])
.attr("r", function(){
return radius(d[i].total)
)};
coordinates 是我圈子的经纬度,是从 csv 文件中读取的。 r 由同一文件中的总数确定。
在地图重新出现后,代码似乎多次重新输入数字以确定圆圈的大小和位置。
当我首先使用地图启动页面时,不会发生这种情况。当我再次从地图调整到图表的大小时,圆圈保持不变。
我使用以下函数来根据窗口大小更改地图的大小。也许这就是我的解决方案的来源?
d3.select(window).on('resize', resize);
function resize() {
// Adjust things when the window size changes
width = parseInt(d3.select('#map').style('width'));
width = width - margin.left - margin.right;
height = width * mapRatio;
// Update projection
projection
.translate([width / 2, height / 2])
.scale(width);
// Resize the map container
map
.style('width', width + 'px')
.style('height', height + 'px')
}
【问题讨论】:
-
你能建立一个plnkr.co 吗?很难理解你的问题。另外,函数
radius的定义是什么,这似乎是这个问题的核心。 -
这是一个plnkr:plnkr.co/edit/rntwBPf7dKeueqttcTI3我很快就把它拼凑起来,但问题就在那里。发生的事情是气泡(以及 plnkr 中的地图)在隐藏然后使用 jQuery 出现时没有正确显示。
-
我还是不明白工作流程。在 plnkr 中,无论以何种方式调整大小、显示/隐藏,我所做的圆圈似乎都随地图缩放。
-
嗯。尝试将窗口缩小到
-
这是 gif:imgur.com/yWCyCKg。第一部分从地图到条形图。中间的快速闪烁是我刷新页面,然后从图表转到地图,显示气泡正在爆炸。
标签: javascript svg d3.js