使用d3在Leaflet貼圖頂部繪製SVG製品是獲得結合d3強度的穩固貼圖控制器的簡單方法。有許多例子和指導如何實現這一點,兩個主要方法似乎是:使用d3和小冊子實現動畫縮放
追加上這表現在博斯托克這裏傳單的「疊加窗格中」新的SVG元素:http://bost.ocks.org/mike/leaflet/
實施納爾遜高塔這裏證明了鉤到單張天然瓷磚層的生態系統的自定義向量瓦片層:http://bl.ocks.org/NelsonMinar/5624141
第一種方法避免了由ATT單張基於標度的縮放疼痛傳單類,以便在縮放發生時隱藏任何d3元素。當縮放動畫結束時,重新計算元素座標並重新繪製,之後隱藏類將被移除以再次顯示元素。這可以起作用,但與Leaflet的原生GeoJSON圖層相比,它提供了不太乾淨的放大/縮小體驗,因爲後者支持動畫縮放。
第二種方法不包含任何實現特定的代碼,該代碼可以滿足縮放行爲,但無論如何都可以工作! d3元素在動畫縮放期間縮放,然後整齊地用下一個縮放級別矢量進行替換。
我想實現的是兩者的結合。我想繪製基於Geo/TopoJSON的非基於tile的矢量,這些矢量在放大/縮小時是動畫效果的。我在使用不同的單張CSS類,不同的事件鉤子,以及以多種方式附加和/或重複使用SVG元素,但還沒有實現類似於使用Leaflet的本地GeoJSON向量時所經歷的行爲的行爲層。我不想使用本地層的原因是我想利用大量其他的d3功能,而不是Leaflet實現的一部分。
問題:有沒有人在使用基於非基於瓦片的矢量合併Leaflet和d3時實現了動畫縮放?如果是這樣 - 如何?
您可能想看看d3地圖上的動畫縮放([this example](http://bl.ocks.org/mbostock/2206340))。請注意,它比某些其他d3縮放範例要慢,因爲它會在放大時重新計算地圖投影,而不是僅使用圖形變換來縮放圖像。我對Leaflet沒有任何經驗,但如果您可以使用Javascript調用設置比例/投影,那麼您可以在重新計算d3地圖投影的同時通過d3縮放功能來實現。但是,再次,每一步都有很多重新計算,所以縮放可能不會超順暢。 – AmeliaBR
感謝您的提示,但是,我相信解決方案必須基於實際縮放的純圖形方法,而不是在轉換期間計算地理座標的方法。 – averas