如何用@react-google-maps/api改变绘图管理器的控制位置

how to change the control position of the drawing manager with the @react-google-maps/api

我正在尝试更改绘图管理器控制面板的位置(让用户 select 绘制什么形状的那个)。

但是,我在这样做时遇到了困难。

我认为位置值 google.maps.ControlPosition.TOP_CENTER 只是数字。所以根据docs I'm trying to pass in the position object similar to the example here

<DrawingManager
       onLoad={this.handleLoadDrawing}
       drawingMode="rectangle"
       onOverlayComplete={(e)=>console.log(e.overlay.bounds)}
       options={
          {
               position: google.maps.ControlPosition.TOP_CENTER
          }
       }    
/>

我也试过 drawingControlOptions 而不是 options 但没有区别。我究竟做错了什么?我创建了一个 codesandbox here.

我真的不是 React 专家,而且他们似乎无法在官方文档中提供一个工作示例,我不太确定应该如何完成。

我认为官方解决方案在这里:https://react-google-maps-api-docs.netlify.app/#usejsapiloader但我无法让它工作。

到目前为止,我能够使您的上述代码正常工作的唯一方法是执行两件事:1) 将绘图管理器移至单独的组件,以及 2) 在组件中使用 /* global google */

/* global google */
import React from "react";
import { DrawingManager } from "@react-google-maps/api";

const DrawingComponent = () => {
  const onLoad = (drawingManager) => {
    console.log("drawingManager", drawingManager);
  };

  const onPolygonComplete = (polygon) => {
    console.log("polygoncomplete", polygon);
  };

  return (
    <DrawingManager
      onLoad={onLoad}
      onPolygonComplete={onPolygonComplete}
      options={{
        drawingControl: true,
        drawingControlOptions: {
          position: google.maps.ControlPosition.TOP_RIGHT,
          drawingModes: [google.maps.drawing.OverlayType.POLYGON]
        },
        polygonOptions: { editable: true }
      }}
    />
  );
};

export default DrawingComponent;

工作代码沙箱:https://codesandbox.io/s/quizzical-poitras-i9rg3?file=/src/DrawingCmp.js