【问题标题】:Google map API dynamic lat/lng initial center not showing correct location谷歌地图 API 动态 lat/lng 初始中心未显示正确位置
【发布时间】:2021-07-19 08:45:38
【问题描述】:

我正在使用本地存储来存储 lat/lng,它是来自另一个组件的产品的一部分。我得到项目 lat/lng 并将它们设置为状态,以在地图中使用。当我逐步浏览所有内容时,它是正确的 lat:32.735962/lng:-96.275256 位于德克萨斯州达拉斯郊外的位置,但是当地图渲染时,它位于几内亚湾的中心。如果我对相同的 lat/lng 进行硬编码,它会呈现正确的位置。

import { Map, GoogleApiWrapper, Marker } from 'google-maps-react';
import '../css/googleMaps.css';




export class Maps extends React.Component {
  constructor(props){
    super(props);
    this.state = {
        lat: '',
        lng: ''
    };
}


  componentDidMount(){
    const lat = localStorage.getItem('lat')
    const lng = localStorage.getItem('lng')
    this.setState({
      lat: lat,
      lng: lng
    })
  }

    logOut = () => {
        localStorage.removeItem('token');
        window.location = '/';
    };

    back = () => {
        localStorage.removeItem('lat')
        localStorage.removeItem('lng')
        window.location = '/patronmain';
    };

    render() {
      const mapStyles = {
        width: "60%",
        height: "60%",
      };
      return (
          <div>
                
                    <p className="lOut" onClick={() => this.logOut()}>Logout</p>
                    <p className="lOut" onClick={() => this.back()}>Back</p>
         
                <Map
                google={this.props.google}
                zoom={5}
                style={mapStyles}
                initialCenter={{lat: this.state.lat, lng: this.state.lng}}
                >
                   <Marker 
                    label='Made Here'
                    postion={{ lat: this.state.lat, lng: this.state.lng }} 
                    />
                </Map>
        </div>
      );
    }
  }



  export default GoogleApiWrapper({
    apiKey: ''
  })(Maps);

【问题讨论】:

    标签: javascript reactjs google-maps local-storage


    【解决方案1】:

    您的地图位于几内亚湾某处的中心,因为您的 initialCenter 的值来自您所在州的值“”。这意味着您的latLng 的值是"","",地图将其视为0,0

    请注意initialCenter 参数接受一个包含经纬度坐标的对象。加载时设置地图中心。

    要在更改状态值时更改地图的中心,您需要使用center 参数,该参数接受包含纬度和经度坐标的对象。如果您想在初始渲染后重新渲染地图,则使用此选项。

    【讨论】:

    • 所以我将地图更改为中心,并将地图移至旧金山的中心。 latlng 正确保存在本地存储中,并设置为 state。
    • 您能否提供代码的sscce 以显示来自localStorage 的值?你可以使用stackblitz
    • 我觉得我在 stackblitz react-hjtxt7.stackblitz.io 上有一个很好的 sscce
    • 我检查了您的代码,似乎问题在于您的中心参数中的拼写错误。它应该是小型大写字母 center 而不是 Center。至于标记,我还可以在参数名称中看到一个拼写错误,您使用postion 而不是position。将它们更改为正确的参数名称将解决问题。这是sample code。另外,提示一下,在将 sscce 提供给 StackOverflow 时删除您的 API 密钥,以保护您的 API 密钥免受不需要的请求。
    • 成功了!感谢您的帮助和提示。
    猜你喜欢
    • 2020-08-13
    • 2013-11-14
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多