关于百度地图的bmap-draw引入react的问题?(语言-javascript)

我在调用百度地图的画图控件的时候出现了如下报错 “bmap_draw__WEBPACK_IMPORTED_MODULE_1__.DrawControl is not a constructor”,我查看报错代码之后发现是

//这段代码报错
const drawContrl = new DrawControl(scene, {
      enableTips: false,
      anchor: "BMAP_ANCHOR_TOP_RIGHT",
      drawingItems: ["marker", "polyline", "polygon", "circle", "rectangle"],
    });

控件地址如下
https://lbsyun.baidu.com/bmap-draw/example/control/draw-control

指导一下,万分感谢

该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据报错信息,bmap_draw__WEBPACK_IMPORTED_MODULE_1__.DrawControl is not a constructor,可以看出 DrawControl 并不是一个构造函数,所以不能使用 new 来创建对象。

根据文档描述,我们可以通过 BMapLib.DrawingManager 来创建画图控件,而 BMapLib.DrawingManager 是通过 BMapLib 对象来引入的。因此,需要确保 BMapLib 已经被正确引入。

可以尝试修改代码,引入 BMapLib,并使用 BMapLib.DrawingManager 创建画图控件:

import BMap from 'BMap';
import 'BMapLib/DrawingManager';

const bmap = new BMap.Map("container");
const drawingManager = new BMapLib.DrawingManager(bmap, {
  isOpen: true,
  enableDrawingTool: true,
  drawingToolOptions: {
    anchor: BMAP_ANCHOR_TOP_RIGHT,
    offset: new BMap.Size(5, 5),
  },
  polylineOptions: {
    strokeColor: "#333",
    strokeWeight: 3,
  },
  circleOptions: {
    strokeColor: "#333",
    fillColor: "#ccc",
    fillOpacity: 0.3,
    strokeWeight: 2,
    strokeOpacity: 0.8,
  },
});
drawingManager.addEventListener("overlaycomplete", function(e) {
  console.log(e.overlay);
});


其中,BMapLib 是通过 script 标签引入的,需要确保 BMapLib 的正确引入。

可能是由于你的代码中缺少对DrawControl构造函数的引用导致的。根据百度地图API文档,DrawControl是由BMapLib.DrawingManager创建的,并且在加载BMapLib.DrawingManager之前,需要先加载百度地图API。

您可以尝试按照以下步骤来解决这个问题:

在你的代码中引入百度地图API,例如:


<script src="https://api.map.baidu.com/api?v=3.0&ak=your_app_key"></script>


在百度地图API加载完成后,再加载BMapLib.DrawingManager和DrawControl构造函数。例如:


<script src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
<script src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingControl_min.js"></script>

然后,您可以在代码中创建DrawControl实例。例如:


const drawControl = new BMapLib.DrawingManager(map, {
  isOpen: false,
  enableDrawingTool: true,
  drawingToolOptions: {
    anchor: BMAP_ANCHOR_TOP_RIGHT,
    offset: new BMap.Size(5, 5),
    scale: 0.8,
  },
  polylineOptions: {
    strokeColor: "#333",
    strokeWeight: 5,
  },
});


在创建DrawControl实例时,需要将地图实例和其他选项传递给它。在上面的示例中,map是你创建的百度地图实例。你还可以设置其他选项,例如是否打开绘图工具,绘图工具的选项,线条的样式等。
请注意,在使用DrawControl之前,确保已经加载了百度地图API和BMapLib.DrawingManager库,并正确引用了DrawControl构造函数。
回答不易,望采纳!