我在嘗試將大量點添加到畫布渲染圖層時遇到了使用Leaflet的問題。性能低下,同時在小冊子地圖中添加了許多圈子
我用下面的一個類似的代碼創建85.000點:
首先我打開我的所有點四叉樹,一個點是與其他一些具體的東西一類,但對於單張的東西,我們有下面的代碼:
var myCanvasRenderer = L.canvas({ paneName });
var geojsonMarkerOptions = { fillColor: "#AFC5CA", color: "#000", weight: 1, opacity: 1, fillOpacity: 0.8, stroke: false, renderer: myCanvasRenderer, pane: paneName }
point.circle = L.circle(latlng, 0.5, myHandler.geojsonMarkerOptions);
然後點添加到一個四叉樹。 在地圖上移動時,我對處理事件繪製視窗內的點數,點數本身繪製調用下面的方法:
circle.addTo(myLayer);
我已經限制了繪製於20.000點。達到此限制時停止該過程,並使用控制檯測量時間。時間
使用circle.addTo調用時,該過程花費大約80秒來繪製20.000點。 評論該呼叫,該過程花費約8秒來「畫」20,000點。 (「繪製」,因爲不是真的繪製)
- 所有的點必須繪製,所以涉及聚類點的解決方案不是一個選項。
- 我必須有一個處理程序的繪製的圓,因爲後來在我需要顯示/隱藏一些點或改變它們的顏色應用
我怎樣才能加快點的圖紙? 傳單庫中是否有類似「bulkAdd」的方法?
在此先感謝您的幫助
你試過'preferCanvas'地圖選項嗎? – ghybs
你好ghybs,我沒有嘗試過這個選項,因爲我已經在傳遞給圓圈的geojsonMarkerOptions的渲染器屬性中設置了畫布。 所以,圓圈已經繪製在畫布上,而不是在SVG渲染器上 –