侧边栏壁纸
  • 累计撰写 46 篇文章
  • 累计创建 38 个标签
  • 累计收到 2 条评论
隐藏侧边栏

地图echart报错“BMap.Overlay is not a constructor”

哒卟刘先生
2022-01-10 / 0 评论 / 0 点赞 / 101 阅读 / 819 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-01-10,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

这两天首页做个地图echart,调用了百度地图api。按照流程写完之后echats的地图出不来报错“BMap.Overlay is not a constructor”,耽误了好久终于解决

本地引用如下

 			<baidu-map
              id="container"
              ak="n3ugvN7lr9xYburKwMf7R9j0"
              style="height:99%"
              :scroll-wheel-zoom="true"
              @ready="initMap"
            ></baidu-map>

排查

1,检查地图及echart需要引用的js是否都引入进来
2,检查初始化方法及是否调用成功
3,检查地图初始化和echarts初始化是否是同步进行

问题根源

bebugger跟踪BMap.Overlay存在,但是他为什么报这个错呢?
整了半天发现初始化地图和初始化echart是异步进行,initMap()echarts.init( document.getElementById("container2"))不在同一个function中
初始化地图比初始化echart慢了几百毫秒,导致加载echarts时地图还没有初始化完成导致错误

解决办法

echarts.init( document.getElementById("container2"))放在initMap()内执行,保证同步

 //初始化地图
    initMap({ BMap, map }) {
      this.BMap = BMap;
      this.map = map;
        //中间echart
      var myChart = (this.chart = echarts.init(
        document.getElementById("container")
      ));
      myChart.setOption(option);
    },
0

评论区