1. 在Leaflet的“覆盖层面板”上附加一个新的SVG元素,如Bostock在这里演示的那样: http://bost.ocks.org/mike/leaflet/。
2. 实现一个自定义矢量切片图层,它可以钩入到Leaflet原生瓦片图层生态系统中,如Nelson Minar在这里演示的那样: http://bl.ocks.org/NelsonMinar/5624141。
第一种方法通过附加一个leaflet-class来避免Leaflet基于比例尺的缩放,以便任何d3元素在缩放时都被隐藏。当缩放动画结束时,重新计算元素坐标并重绘,然后移除hide-class以再次显示元素。这种方法有效,但与Leaflet的本地GeoJSON图层相比,缩放效果不够清晰,因为后者支持动画缩放。
第二种方法不包含任何特定于实现的代码来解决缩放行为,但仍然可以工作!在动画缩放期间,d3元素被缩放,然后用下一个缩放级别的矢量替换。
我想要实现的是两者的结合。我想基于Geo/TopoJSON绘制非切片矢量,在缩放时进行动画处理。我尝试使用不同的leaflet css类、不同的事件钩子以及多种方式附加和/或重用SVG元素,但还没有达到与使用Leaflet本机GeoJSON矢量图层时类似的效果。我不想使用本机图层的原因是我想利用许多其他d3功能,这些功能并不是Leaflet实现的一部分。
问题:是否有人已经通过结合Leaflet和d3使用非切片矢量实现了动画缩放?如果有 - 如何实现?