navigator.geolocation.getCurrentPosition
является асинхронным, поэтому вам необходимо использовать обратный вызов успеха и указать там местоположение пользователя.
Вы можете добавить дополнительный фрагмент состояния с именем, например, loading
, и отображается только когда известна геолокация пользователя.
Пример
export class MapContainer extends React.Component {
state = { userLocation: { lat: 32, lng: 32 }, loading: true };
componentDidMount(props) {
navigator.geolocation.getCurrentPosition(
position => {
const { latitude, longitude } = position.coords;
this.setState({
userLocation: { lat: latitude, lng: longitude },
loading: false
});
},
() => {
this.setState({ loading: false });
}
);
}
render() {
const { loading, userLocation } = this.state;
const { google } = this.props;
if (loading) {
return null;
}
return <Map google={google} initialCenter={userLocation} zoom={10} />;
}
}
export default GoogleApiWrapper({
apiKey: "-----------"
})(MapContainer);