我想在d3.js的Map上实现语义缩放。我已经开发了一个Map和特定国家的主要城市的例子,它工作得很好,但有时圆得到了重叠,由于在Map上的近地方,所以如果我实现语义缩放,这将解决我的圆重叠问题。
我不明白如何在我的Map上只变换图形而不变换圆圈。
我的缩放功能代码是:
var zoom = d3.behavior.zoom()
.on("zoom",function() {
g.attr("transform","translate("+
d3.event.translate.join(",")+")scale("+d3.event.scale+")");
g.selectAll("circle")
.attr("d", path.projection(projection));
g.selectAll("path")
.attr("d", path.projection(projection));
});
我的jsfiddle link
谁来帮帮我啊!
2条答案
按热度按时间vlju58qv1#
你是在问如何 * 不 * 根据缩放比例缩放圆圈吗?你的方法是缩放
g
元素,圆圈就在里面。我的方法是在缩放时“缩小”圆圈。更新fiddle。
g2ieeal72#
我知道这是一个旧的职位,它已经有一个公认的答案,但正如原来的职位建议,d3的Semantic Zoom是一种更简洁的方法。(Map上城市的圆圈)。我唯一需要改变的是,我必须在转换函数中减去圆圈的初始位置,以便纠正它们的初始位置。位置。
}