微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我有 2 个带有 react-google maps DrawingManager 的“绘制多边形”按钮

如何解决为什么我有 2 个带有 react-google maps DrawingManager 的“绘制多边形”按钮

所以我对 React 比较陌生,这是我第一次使用 react-google-maps,我试图创建一个带有地图的页面用户可以在其中绘制多边形,但我得到以下内容

[我的地图][1] https://i.stack.imgur.com/VjGP8.png

我似乎无法理解为什么我有两次相同的按钮。 这是我的代码

import { compose,withProps } from "recompose";
import { withScriptjs,withGoogleMap,GoogleMap } from "react-google-maps";



const center = {
   lat: 48.866667,lng: 2.333333,}

 const {
   DrawingManager
 } = require("react-google-maps/lib/components/drawing/DrawingManager");
 
 const DrawingManagerWrapper = compose(
   withProps({
     googleMapURL: `https://maps.googleapis.com/maps/api/js?key={API_KEY}=3.exp&libraries=geometry,drawing,places`,loadingElement: <div style={{ height: `100%` }} />,containerElement: <div style={{ height: `400px` }} />,mapElement: <div style={{ height: `100%` }} />
   }),withScriptjs,withGoogleMap
 )(props => (
   <GoogleMap
     defaultZoom={12}
     defaultCenter={new window.google.maps.LatLng(51.509865,-0.118092)}
   >
     <DrawingManager
       setMap={GoogleMap}
       overlaycomplete={props.onComplete}
       defaultOptions={{
         drawingControl: true,drawingControlOptions: {
           style: window.google.maps.MapTypeControlStyle.HORIZONTAL_BAR,position: window.google.maps.ControlPosition.TOP_CENTER,drawingModes: [window.google.maps.drawing.OverlayType.polyGON]
         },polygonoptions: {
           fillColor: "#199ee0",fillOpacity: 0.2,strokeWeight: 2,strokeColor: "#113460",clickable: true,editable: true,geodesic: false,visible: true,zIndex: 1,}
       }}
     />
   </GoogleMap>
 ));
 
 export default DrawingManagerWrapper; ```


 [1]: https://i.stack.imgur.com/VjGP8.png

解决方法

您的问题看起来像是 DrawingManager 被调用了两次,因此有 2 个按钮,如您的屏幕截图所示。这是您使用的所有代码吗?我使用了 this code,但似乎无法复制它。

另一件事,请检查您的 Google Maps Javascript 脚本标签是否正确编码,您的代码中的 API 密钥后似乎有 =3.exp,我认为应该是 &v=3.exp。>

此外,您还可以检查 @react-google-maps/api 库,因为它完全重写了(遗憾的是未维护的)react-google-maps 库。这是在此库中实现 DrawingManager 的 sample code,下面是代码片段:

/*global google*/
import ReactDOM from "react-dom";
import React from "react";

import { GoogleMap,DrawingManager } from "@react-google-maps/api";

const defaultLocation = { lat: 40.756795,lng: -73.954298 };

class Map extends React.Component {
  state = {
    directions: null,bounds: null,style: null,position: null
  };

  onMapLoad = map => {};

  render() {
    return (
      <div>
        <GoogleMap
          center={defaultLocation}
          zoom={5}
          onLoad={map => this.onMapLoad(map)}
          mapContainerStyle={{ height: "400px",width: "800px" }}
        >
          <DrawingManager
            options={{
              drawingControl: true,drawingControlOptions: {
                style: window.google.maps.MapTypeControlStyle.HORIZONTAL_BAR,position: window.google.maps.ControlPosition.TOP_CENTER,drawingModes: [window.google.maps.drawing.OverlayType.POLYGON]
              },polygonOptions: {
                fillColor: "#199ee0",fillOpacity: 0.2,strokeWeight: 2,strokeColor: "#113460",clickable: true,editable: true,geodesic: false,visible: true,zIndex: 1
              }
            }}
          />
        </GoogleMap>
      </div>
    );
  }
}

export default Map;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?