gpt4 book ai didi

javascript - 使用 react 创建带有用户位置的谷歌地图

转载 作者:行者123 更新时间:2023-12-03 14:03:22 29 4
gpt4 key购买 nike

我是 React 新手,目前正在尝试学习如何使用 react-google-maps 库。尝试显示用户地理位置作为 map 的 initialCenter 的 map 。

这是我的代码:

import React from "react";
import { GoogleApiWrapper, Map } from "google-maps-react";

export class MapContainer extends React.Component {
constructor(props) {
super(props);
this.state = { userLocation: { lat: 32, lng: 32 } };
}
componentWillMount(props) {
this.setState({
userLocation: navigator.geolocation.getCurrentPosition(
this.renderPosition
)
});
}
renderPosition(position) {
return { lat: position.coords.latitude, lng: position.coords.longitude };
}
render() {
return (
<Map
google={this.props.google}
initialCenter={this.state.userLocation}
zoom={10}
/>
);
}
}

export default GoogleApiWrapper({
apiKey: "-----------"
})(MapContainer);

创建带有用户位置的 map 后,我得到了默认状态值的 initialCenter

我该如何解决这个问题?我是否正确使用了生命周期函数?

非常感谢您的帮助

最佳答案

navigator.geolocation.getCurrentPosition 是异步的,因此您需要使用成功回调并在其中设置用户位置。

您可以添加一个额外的状态,例如正在加载,并且仅在已知用户地理位置时呈现。

示例

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);

关于javascript - 使用 react 创建带有用户位置的谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51200761/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com