Echarts 是一款優秀的圖表庫,常用到的組件之一就是地圖組件。地圖組件需要通過 JSON 格式的數據來實現渲染,但是直接使用原始數據過大且不便于維護,因此我們需要對數據進行解壓縮處理。
const decodeData = (source) =>{ let temp = []; let data = new Uint8Array(encode.decode(source)); for (let i = 0; i< data.length; i += 2) { let value = data[i] + (data[i + 1]<< 8); if (value< 0x8000) { temp.push(value / 10000); } else { value = value - 0xFFFF - 1; temp.push(value / 10000); } } return temp; };
這段代碼通過調用 echarts 的內部方法來實現地圖 JSON 數據的解壓縮。解析出來的數據會被存入 temp 數組中,并在函數最后返回。對于暫未了解 decode 函數的讀者,在此僅作簡單說明:該函數為 echarts 內置解碼方法,用于解壓縮地圖數據。
調用該函數時,我們需要傳入一個參數作為原始數據源。對于本文提供的這段代碼來說,這個參數應該是作為字符串形式的 JSON 數據。在函數內部,我們首先將 JSON 數據字符串通過解碼方法轉換為字節數組 data,接著我們對這個字節數組進行二進制解碼。最后,我們將每兩個字節作為一個整數解析出來,并根據整數的值來判斷當前值是否是正數或者負數。
"value = value - 0xFFFF - 1;"
這行代碼是解析負數的情況,echarts 內置算法將負數的原始值存成了 unsigned short 類型,進行解壓縮后需要將其轉化為正數形式,因此用該算法轉變其值。
通過將原始數據解壓縮處理,我們可以更方便、更快速地使用 echarts 地圖組件繪制地圖,不僅提高了開發效率,而且可以減小數據量,優化了渲染速度。