react-google-autocomplete 中的自动完成不会带我到地图上的位置

问题描述 投票:0回答:1

这也可能是渲染问题,但我不确定。 apiKey 正确。

我期待用户被带到地图上的坐标。

我可以看到记录表明我的地点已被选择,但它不会带我去你的地图。

import { GoogleMap} from '@react-google-maps/api';
import Autocomplete from 'react-google-autocomplete';

const Autocomplete= () => {

  const [map, setMap] = useState(null);
const handlePlaceSelect = (place) => {
    console.log('Place selected:', place);
    if (!place.geometry) {
      window.alert("No details available for input: '" + place.name + "'");
      return;
    }

    if (map) {
      if (place.geometry.viewport) {
        map.fitBounds(place.geometry.viewport);
      } else {
        map.setCenter(place.geometry.location);
        map.setZoom(17); // Zoom in to an appropriate level when searching by place name
      }
    } else {
      console.error('Map is not yet initialized');
    }
  };
return(
 <GoogleMap
            mapContainerStyle={mapContainerStyle}
            zoom={11}
            center={center}
            options={{ styles: mapStyles, fullscreenControl: false }}
            onLoad={(map) => setMap(map)}
          >
            {map && (
              <Autocomplete
                apiKey=""
                onPlaceSelected={handlePlaceSelect}
                options={{
                }}
                style={{ width: '100%', position: 'absolute', zIndex: '100' }}
                placeholder="Search..."
              />
            )}
          </GoogleMap>
    )
    };

export default Autocomplete;

javascript reactjs react-google-maps
1个回答
0
投票
import { GoogleMap} from '@react-google-maps/api';
import Autocomplete from 'react-google-autocomplete';

const Autocomplete= () => {


const [map, setMap] = useState(null);

const [selectedLocation, setSelectedLocation] = useState({
    lat:"initial latitude"
    lng: "initial longitude"
  });

const handlePlaceSelect = (place) => {
    if (!place.geometry) {
      window.alert("No details available for input: '" + place.name + "'");
      return;
    }

    if (map) {
      if (place.geometry.viewport) {
        map.fitBounds(place.geometry.viewport);
      } else {
        map.setCenter(place.geometry.location);
        map.setZoom(17);
      }
    } else {
      console.error('Map is not yet initialized');
    }
    setSelectedLocation(place.geometry.location);
  };
 return (
  <GoogleMap
          center={selectedLocation}
          onLoad={(map) => setMap(map)}
        >
          {map && (
             <Autocomplete
              apiKey=["Your Api Key"]
              onPlaceSelected={handlePlaceSelect} 
            />
  </GoogleMap>
    )
}
© www.soinside.com 2019 - 2024. All rights reserved.