TalkingData 開源地理資訊視覺化框架 inMap

Aresn發表於2017-12-19

本文作者:TalkingData 視覺化工程師 李鳳祿

inMap 是 TalkingData 視覺化團隊開源的一款基於 canvas 的大資料視覺化庫,專注於大資料方向點、線、面的視覺化效果展示。目前支援散點、圍欄、熱力、網格、聚合等方式;致力於讓大資料視覺化變得簡單易用。

GitHub地址:github.com/TalkingData… (求Star!)

文件地址:inmap.talkingdata.com

特性:

  • 多執行緒 高效能
  • 多圖層疊加
  • 智慧的演算法
  • 友好的 API
  • 可以自定義主題

效果截圖如下:

TalkingData 開源地理資訊視覺化框架 inMap

inMap 是更加智慧的地理視覺化框架,主要面向從事資料視覺化應用相關的工程師和設計師。

  • 底層繪圖引擎:目前基於 canvas 2d 提供基礎繪圖能力,基於 WebGL 的版本正在規劃中;
  • 演算法:內建了經緯度墨卡託轉換、文字避讓演算法、最佳標記點演算法、自動分組標記配色演算法等。

inMap 寫的每個演算法都是為了增強使用者體驗,追求極致效果,我們希望用 inMap 能夠做出偉大的產品。

inMap 介面設計也很友好,希望讓開發者通過簡單的配置,就能快速構建出優美視覺化效果。

文字避讓演算法介紹:

我們在專案中經常會遇到在地圖上打點並標上文字的需求,我們用某流行的視覺化庫展示出效果如下:

(文字密密麻麻一團,都疊在一塊,效果很差,估計會被要被產品經理咬住不放)

TalkingData 開源地理資訊視覺化框架 inMap

inMap 實現了基於文字排版演算法,是不是很贊,效果圖如下:

TalkingData 開源地理資訊視覺化框架 inMap

是不是很酷啊,inMap 實現了自己的四分位文字排版演算法,聽起來不明覺厲的樣子,彆著急,讓我慢慢道來。

每一個標記點都有上下左右四個放文字的位子,如果左邊放不下,那就放右邊試試,還不行就放到下面試試,以此類推,原理就這麼簡單,哈哈。

實現細節如下:

  • 求出要顯示文字的矩形(文字寬高)
  • 建立帶有座標的虛擬文字集合物件、對集合的座標進行從小到大排序
  • 遞迴遍歷虛擬文字集合、判斷是否與其他相交,如果有相交就移動當前文字位子,直到不相交為止。當找不到合適位置時,就選擇隱藏當前文字。

後續會輸出創造更好的視覺化圖形和演算法,並後續推出 WebGL 版本。

相關文章