我正在构建基于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更改日志中找到任何相关更改,如果有人知道这可能对我有什么帮助。
答案 0 :(得分:0)
好的,所以最好的解决方案是从头开始,从v3示例开始,如http://bl.ocks.org/mbostock/4132797(我试过并成功)或http://bl.ocks.org/mbostock/4150951,如Lars Kotthoff评论。