React Google Maps API -contrainsLocation; b。get不是函数。

发布于 2025-01-20 13:41:47 字数 1570 浏览 1 评论 0原文

我正在创建一个单击地图的标记,我想知道该标记是在多边形内部还是外部。我为此使用 containsLocation 函数,但我不断收到以下错误“TypeError:b.get 不是函数”。预先感谢您的回答。

function App() {
  const refPoly = useRef(null);
  const [position, setPosition] = useState(null);

  const center = {
    lat: 25.774,
    lng: -80.19,
  };
  
  const containerStyle = {
    position: "absolute",
    width: "70%",
    height: "70%",
  };

  const bermudaTriangle = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
  ];
  const google = window.google;
  const onHandleClickMap = (event) => {
    setPosition({ lat: event.latLng.lat(), lng: event.latLng.lng() });
    console.log(
      google.maps.geometry.poly.containsLocation(event.latLng, bermudaTriangle)
    );
  };

  return (
    <div className="App">
      <LoadScript
        googleMapsApiKey={GOOGLE_MAPS_API_KEY}
        id="script-loader"
        libraries={["geometry"]}
      >
        <GoogleMap
          mapContainerStyle={containerStyle}
          center={center}
          zoom={18}
          onClick={onHandleClickMap}
        >
          <Polygon
            ref={refPoly}
            paths={bermudaTriangle}
            strokeColor="#0000FF"
            strokeOpacity={0.8}
            strokeWeight={2}
            fillColor="#0000FF"
            fillOpacity={0.35}
          />
          {position && <Marker position={position} />}
        </GoogleMap>
      </LoadScript>
    </div>
  );
}

I am creating a marker where the map is clicked and I want to know if this marker is inside or outside the polygon. I use the containsLocation function for this, but I keep getting the following error "TypeError: b.get is not a function". Thank you in advance for your answers.

function App() {
  const refPoly = useRef(null);
  const [position, setPosition] = useState(null);

  const center = {
    lat: 25.774,
    lng: -80.19,
  };
  
  const containerStyle = {
    position: "absolute",
    width: "70%",
    height: "70%",
  };

  const bermudaTriangle = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
  ];
  const google = window.google;
  const onHandleClickMap = (event) => {
    setPosition({ lat: event.latLng.lat(), lng: event.latLng.lng() });
    console.log(
      google.maps.geometry.poly.containsLocation(event.latLng, bermudaTriangle)
    );
  };

  return (
    <div className="App">
      <LoadScript
        googleMapsApiKey={GOOGLE_MAPS_API_KEY}
        id="script-loader"
        libraries={["geometry"]}
      >
        <GoogleMap
          mapContainerStyle={containerStyle}
          center={center}
          zoom={18}
          onClick={onHandleClickMap}
        >
          <Polygon
            ref={refPoly}
            paths={bermudaTriangle}
            strokeColor="#0000FF"
            strokeOpacity={0.8}
            strokeWeight={2}
            fillColor="#0000FF"
            fillOpacity={0.35}
          />
          {position && <Marker position={position} />}
        </GoogleMap>
      </LoadScript>
    </div>
  );
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

つ可否回来 2025-01-27 13:41:47

我也有同样的问题;我这样解决了:

而不是:

const bermudaTriangle = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
  ];

...我写了像这样的百慕大图:

 const bermudaTriangle = new window.google.maps.Polygon({
            paths: polygons[0].paths,
          });


        console.log(window.google.maps.geometry.poly.containsLocation(
            { lat: event.latLng.lat(), lng: event.latLng.lng() },
            bermudaTriangle)
        );

I had the same issue; I solved it like this:

Instead of:

const bermudaTriangle = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
  ];

...I wrote the bermudaTriangle like this:

 const bermudaTriangle = new window.google.maps.Polygon({
            paths: polygons[0].paths,
          });


        console.log(window.google.maps.geometry.poly.containsLocation(
            { lat: event.latLng.lat(), lng: event.latLng.lng() },
            bermudaTriangle)
        );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文