如何在可缩放的地图上重新定位标签?

时间:2017-11-14 01:36:42

标签: d3.js

我正在处理由D3.js创建的地图。我想出了如何放大地图并按照Mike Bostock's tutorial添加标签。但是,在我放大地图后,我不知道如何重新计算标签的坐标。

我真的不明白projection(data.geometry.coordinates)是如何运作的。似乎projection()将根据当前svg重新创建一对新坐标,并以某种方式自动为您放置标签。因此,我尝试在projection()函数中再次运行clicked(),但它不起作用。

以下是我正在处理的code,我使用的是d3版本4而非3版。

1 个答案:

答案 0 :(得分:2)

如果您将城镇添加到g选项(而不是svg选项),那么它应该可以正常工作,因为缩放适用于该选择。

var selection = g
        .selectAll("g.classTown")
        .data(towns);

更新代码:http://plnkr.co/edit/xJvh6LVweZqQUs7GFFH7?p=preview