为什么react-google-maps/api不显示线条和多边形?

Ali*_*Ali 2 javascript maps google-maps reactjs react-google-maps

我在主项目中使用react-google-maps/api库,但我看不到我在地图上绘制的线条。所以我创建了演示项目来尝试相同的代码。有用。但主项目不起作用。我查看了react版本、react-dom版本、react-google-maps/api版本。这三个都是相同的版本。在主要项目中;地图和标记来了。但我想画一个容器或线条,它没有显示。当我双击时,我会将坐标信息发送到控制台。所以我得到了真实的坐标信息,但我看不到线条和容器。为什么我在主项目上看不到线条?

import React from 'react';
import { GoogleMap, useJsApiLoader, DrawingManager } from '@react-google-maps/api';

const containerStyle = {
  width: '800px',
  height: '400px'
};

const center = {
  lat: -3.745,
  lng: -38.523
};

function App() {

  const { isLoaded } = useJsApiLoader({
    id: 'google-map-script',
    googleMapsApiKey: "my_Key"
  })

  const onLoad = React.useCallback(function callback(map) {
    const bounds = new window.google.maps.LatLngBounds(center);
    map.fitBounds(bounds);
  }, [])

  function getPaths(polygon) {
    var polygonBounds = polygon.getPath();
    var bounds = [];
    for (var i = 0; i < polygonBounds.length; i++) {
      var point = {
        lat: polygonBounds.getAt(i).lat(),
        lng: polygonBounds.getAt(i).lng()
      };
      bounds.push(point);
    }
    console.log("coordinates", bounds);
  }

  return isLoaded ? (
    <GoogleMap
      mapContainerStyle={containerStyle}
      center={center}
      zoom={10}
      onLoad={onLoad}
    >
      <DrawingManager
        defaultDrawingMode={window.google.maps.drawing.OverlayType.POLYGON}
        onPolygonComplete={value => getPaths(value)}
        defaultOptions={{
          drawingControl: true,
          drawingControlOptions: {
            position: window.google.maps.ControlPosition.TOP_CENTER,
            drawingModes: [
              window.google.maps.drawing.OverlayType.POLYGON
            ],
          },
          polygonOptions: { editable: true }
        }}
      />
    </GoogleMap>
  ) : <></>
}

export default App;

Run Code Online (Sandbox Code Playgroud)

小智 6

检查反应严格模式是否开启。应该关闭。这修复了我的多边形未显示在地图上的问题