Adding Marker to Google Maps in google-map-react

前端 未结 4 1486
耶瑟儿~
耶瑟儿~ 2020-12-14 15:53

I am using the google-map-react NPM package to create a Google Map and several markers.

Question: How can we add the default Google Maps markers to

4条回答
  •  误落风尘
    2020-12-14 16:23

    Based on the answer by MasterAM.

    If you using react hooks, this one could do the trick:

    import React, { useMemo, useEffect } from 'react';
    
    const createControlledPromise = () => {
      let resolver;
      let rejector;
      const promise = new Promise((resolve, reject) => {
        resolver = resolve;
        rejector = reject;
      });
      return { promise, resolver, rejector };
    };
    
    const useMarker = ({ lat, lng }) => {
      const { 
        promise: apiPromise, 
        resolver: handleGoogleApiLoaded 
      } = useMemo(
        createControlledPromise,
        []
      ).current;
    
      useEffect(
        () => {
          let marker;
          apiPromise.then(api => {
            const { map, maps } = api;
            marker = new maps.Marker({ position: { lat, lng }, map });
          });
          return () => {
            if (marker) {
              marker.setMap(null);
            }
          };
        },
        [lat, lon],
      );
      return { handleGoogleApiLoaded };
    };
    
    const Location = ({
      location: { locationName, lat, lng }
    }) => {
      const { handleGoogleApiLoaded } = useMarker({ lat, lng });
      return (
        

    {locationName}

    ); };

提交回复
热议问题