主要看思路:區域數據去重 + JavaScript一次性展示幾萬條數據實例代碼


近期做1功能,Gis地圖 基於百度地圖api , 會遇到的問題的,

如后台接口給的數據很多,大幾千上萬的,如果拿了數據直接渲染dom ,這滋味爽爽的。

再遇上 客戶端瀏覽器悲催的,這卡頓就來了...

前端大量數據渲染的一個弊端。

 

想到的處理方式:

1. 數據的去重合並

基於當前可是屏幕范圍,拿到baidu對應的 經維度區域,baidu api 里有 getBounds 和 getZoom 方法

var viewArea =  map.getBounds();  // 可視區域
var mapScale = map.getZoom();  // 地圖放大縮小比例

對應后台接口返回數據,要拿基於這個可是區域的維度范圍進行返回,

如果回來有萬以上,在頁面上展示這么多也沒實際意義,

前端需要自己進行數據過濾,基於放大縮小比例, 屏幕上返回數據偏差不大的要進行去重  (這個算法就先不細說了)

最先想到的是 2組數據循環對比去重,怎么看都不太對啊,這要數據多了??? 不用想,絕對要掛的節奏....

-------------------------------

和架構師聊了,給了個建議,效率上好很多, 看下圖:

給的思路:

1. 基於區域畫格子,算出格子對應的經緯度,構造1個二維數組的數據;

2. 拿到后台返回的數據,循環時,算出在二位數組中對應的位置,如狀態為無就認為該條數據有效,更改對應二位數組數據的狀態, 如已經有狀態了數量丟棄,對應的狀態數量+1;

處理出有效的數據......扯的有點遠了

 

2. 數據的分片渲染展示

如果有效數據還是很多,假如有大幾千幾萬的,一次展示全也是苦哈哈的;

處理方式其實也不復雜, 把數據照一定數量進行分塊,定時異步展示出;

如有6000條數據, 可照1000條拆成6組, 先拿1組展示,循環定時展示出其他....

思路基本上是這樣

 

更多細節也可參考看到的一文章, 里面有個保持數據插入的次序不錯,可作參考

JavaScript一次性展示幾萬條數據實例代碼: http://www.php.cn/js-tutorial-360591.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM