Echarts與百度地圖結合使用的實踐總結


在項目中,常常會涉及到地圖相關的比較炫,相對復雜的效果實現需求,這個時候,將echarts與百度地圖結合使用,就勢在必行了。以下是自己在實踐過程中遇到問題的簡要總結:

如:已經創建了一個echarts實例,var myChart = echarts.init(document.getElementById('allmap'));且進行了相關參數的設置,myChart.setOption(option);
1.通過echarts實例獲取地圖實例的方法

  • var bmap = myChart.getModel().getComponent('bmap').getBMap();
  • 獲取到的百度地圖對象bmap適用於所有的百度地圖的接口。
  • 如,設置地圖的最大最小縮放級別:
    bmap.setMinZoom(5);
    bmap.setMaxZoom(6);

2.對bmap進行相關設置操作,但無效的原因及解決辦法

  • 問題原因查找的思路:
    1)排除其他代碼干擾因素,去官網示例中進行操作,看是否有效。
    2)若有效,比較自己的代碼與官網示例的差異,鎖定可能存在問題的部分,進行問題排查
  • 解決方法:當數據是通過ajax異步請求得到時,重新執行了myChart.setOption(option)的設置語句,此時,需要重新通過該實例myChart去獲取地圖對象bmap並進行相關的設置操作。

3.數據定時刷新,即定時進行myChart.setOption(option)的設置時,地圖也進行了重載,導致出現了地圖一閃一閃的抖動,影響使用的原因及解決方法

  • 問題原因查找的思路:同上面的問題2
  • 解決方法:myChart.setOption(option,true)去掉該設置語句中的第二個參數true,加上該參數,會導致重繪

4.在頁面定時刷新的過程中,數據不斷堆疊,效果堆疊,最后頁面地圖無法顯示,頁面崩潰的原因及解決方法

  • 問題原因查找的思路:起初,用到了myChart.clear()方法,起到了一定的作用,但是仍然效果不佳。
    實際上,在查找bug原因時,一定要充分利用瀏覽器的js斷點調試,來查看代碼的執行情況,從而明確定位到bug原因,而不能是,單純地從效果着手解決問題。
  • 解決方法:在每次myChart.setOption(option)時,需要清空series,否則就是不停地往series里面push數據。

5.點擊頁面中的DOM節點,如tab選項卡,對應切換地圖效果渲染的實現方法

  • 點擊切換tab選項卡,對應切換legend的選中狀態
option.legend.selected = {
    '第一項': false,
    '第二項': false,
    '第三項': false
};
option.legend.selected[selecteditem] = true;

6.本地運行ok,集成到項目里面,引用文件內報錯的原因及解決方案

  • 本地調試ok之后,集成到項目里面,引用的文件報錯,對於這種問題,基本上是寫的代碼的問題,而不是引用文件的問題,所以,着手點應該是集成前后的代碼差異,本次的問題原因最后確定是后添加的一個容錯處理return導致的。

7.文件引用的問題

  • 根據需要,引用echarts對應的js文件,比如需要散點圖,則echarts.common.min.js就不夠用了,所以引用的是echarts.min.js
  • 同時,還需要引用bmap.min.js,來完成echart的地圖部分的功能。


免責聲明!

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



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