javascript - 缩放传单 map 时,SVG 圆圈不会重新定位

标签 javascript svg d3.js transform leaflet

我正在使用 d3 在传单 map 上添加 svg 圆圈。 我的 fiddle 在这里 http://jsfiddle.net/nextstopsun/C3U8g/

我添加了一个 reset() 函数来映射 viewreset 事件,以计算包含所有圆圈的 svg g 元素的转换。此函数在 map View 重置事件中调用。

    svg.attr("width", topRight[0] - bottomLeft[0])
    .attr("height", bottomLeft[1] - topRight[1])
    .style("margin-left", bottomLeft[0] + "px")
    .style("margin-top", topRight[1] + "px");
g.attr("transform", "translate(" + -bottomLeft[0] + "," + -topRight[1] + ")");

(代码来源于本例http://bost.ocks.org/mike/leaflet/)

我可以看到 g 元素的变换参数正在重新计算,但圆圈没有重新定位(或者它们重新定位错误)并且没有与 map tilelayer 对齐。 不过,平移 map 时一切正常。 必须更改什么才能在缩放时正确重新定位?

最佳答案

除了变换包含圆圈的g元素外,还需要重新设置圆圈本身的坐标:

circles.attr("cx", function (d) { return project([d.m4312, d.m4311])[0]; })
       .attr("cy", function (d) { return project([d.m4312, d.m4311])[1]; });

已更新 jsfiddle here .

关于javascript - 缩放传单 map 时,SVG 圆圈不会重新定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17345987/

相关文章:

javascript - 径向树状图上未显示数据

javascript - function() 和 $(this) 中的 each()

javascript - 使用 svg.js 加载 SVG 文件

php - 在服务器端将 SVG 转换为 JSON?

javascript - 为什么 d3 组中具有相同坐标的两个元素不是 100% 重叠?

javascript - SimpleHTTPServer 代码 404,消息未找到文件

Javascript 图片加载 Facebook 风格

javascript - 单击行时如何突出显示 JSF 行

Javascript:如果满足条件则隐藏元素

d3.js - c3.js - 如何手动触发 donut 弧的悬停?