D3变焦行为在v3破坏地图图块示例中发生变化

时间:2014-11-11 20:56:24

标签: javascript d3.js

我正在构建基于d3的平铺地图。所以我找到the corresponding d3 example并复制粘贴其代码以开始我的实现。我需要在地图上添加叠加层,所以继续发现它们放错位置并且在缩放时没有按照地图图块。我花了很多时间将我改编的复制粘贴和原始示例之间的区别分开,发现这是因为该示例使用了d3的v2而我使用的是v3。

我的发现是v2和v3之间的主要变化是缩放和平移的行为。所以我通过缩放和打印翻译矢量来测试,我的发现是: 在v2中,如果鼠标光标在初始图块上的(lat,long)= 0,0)上,则projection.translate向量保持不变。 在v3中,如果鼠标光标在初始图块的左上角(大多数NW点) ,则projection.translate向量保持不变。

我已经制作了一个fiddle,其中我复制粘贴了示例代码,添加了应该覆盖地球的调试点加上巴黎的一个点,看看是否与瓷砖对齐是正确的。 你会注意到巴黎没有正确放置,(但如果你在d3 v2上运行它会是这样)。

所以我想我现在只需要做一些数学来更新初始示例逻辑,可能是tile_origin或平铺转换计算。我刚刚开始尝试修复它们,但这似乎并非无足轻重。所以我在这里询问是否有人知道在示例中要改变什么以使其在v3中工作(即,无论缩放级别如何,在巴黎之后都有一个红点)。 我也无法在v3更改日志中找到任何相关更改,如果有人知道这可能对我有什么帮助。

1 个答案:

答案 0 :(得分:0)

好的,所以最好的解决方案是从头开始,从v3示例开始,如http://bl.ocks.org/mbostock/4132797(我试过并成功)或http://bl.ocks.org/mbostock/4150951,如Lars Kotthoff评论。