天天看點

leaflet快速渲染聚合矢量瓦片(附源碼下載下傳)

具體實作思路:leaflet結合Web Worker技術,借助supercluster插件,實作leaflet快速展示聚合效果。矢量瓦片請求資料源部分也放在Worker線程來處理,避免阻塞主線程UI互動部分響應。

測試資料:聚合點23.8w,矢量瓦片資料源15w左右。

leaflet 入門開發系列環境知識點了解: leaflet api文檔介紹,詳細介紹 leaflet 每個類的函數以及屬性等等 leaflet 線上例子 leaflet 插件,leaflet 的插件庫,非常有用
leaflet快速渲染聚合矢量瓦片 源代碼demo下載下傳

錄制示範視訊

效果圖如下:

leaflet快速渲染聚合矢量瓦片(附源碼下載下傳)
leaflet快速渲染聚合矢量瓦片(附源碼下載下傳)
引用關鍵技術點: 1.Web Worker:Web Worker的作用,就是為JavaScript創造多線程環境,允許主線程建立Worker線程,将一些任務配置設定給後者運作。在主線程運作的同時,Worker線程在背景運作,兩者互不幹擾。等到 Worker 線程完成計算任務,再把結果傳回給主線程。這樣的好處是,一些計算密集型或高延遲的任務,被Worker線程負擔了,主線程(通常負責 UI 互動)就會很流暢,不會被阻塞或拖慢。 2.supercluster插件:supercluster插件

完整的見源碼demo下載下傳,聚合效果實作部分思路:

1.supercluster插件把聚合點資料源預處理,按照矢量瓦片思路提前把聚合點資料源切片處理好,每個級别對應的聚合點數以及對應資料源(zoom,count,data);

2.leaflet通過監聽地圖範圍變化事件,主線程跟worker子線程之間互相通信互動,然後leaflet根據worker子線程傳回來的資料源,動态重新整理聚合資料。

完整的見源碼demo下載下傳,矢量瓦片實作部分思路:請求矢量資料源部分放在worker子線程處理,然後傳回來leaflet主線程來矢量瓦片渲染可視化。

完整demo源碼見小專欄文章尾部:小專欄

文章尾部提供源代碼下載下傳,對本專欄感興趣的話,可以關注一波

GIS之家作品店鋪:GIS之家作品店鋪

GIS之家源碼咨詢:GIS之家webgis入門開發系列demo源代碼咨詢