簡體   English   中英

如何根據狀態變化重新渲染Google地圖?

[英]How to re-render google map in react upon state change?

我正在按照此指南將JavaScript Maps API與React.js集成:

http://cuneyt.aliustaoglu.biz/en/using-google-maps-in-react-without-custom-libraries/

我可以使地圖加載良好,並且一切正常。 我遇到的問題是狀態更改時無法重新渲染地圖。

本質上,我正在使用以下代碼: https : //stackblitz.com/edit/react-67pggp?file=index.js

除此之外,我正在嘗試通過狀態更改來動態更改標記的位置。 因此,在傳遞給Map組件的onMapLoad()函數中,我替換了該行

position: { lat: 41.0082, lng: 28.9784 }

與類似的東西

position: { lat: this.state.lat, lng: this.state.lng }

並且我希望只要狀態中存儲的位置發生變化,標記的位置就會發生變化。 我知道問題源於僅在組件首次安裝時才調用onMapLoad()的事實,但是我不確定如何使地圖重新渲染並顯示更新的標記位置。 任何幫助表示贊賞。 謝謝。

您可以使用getInitialState方法初始化默認狀態,並在render中使用此變量。

import React, { Component } from 'react';
import { render } from 'react-dom';
import Map from './map'

class App extends Component {
  constructor() {
    super();
  }
   getInitialState() {
    return {
       lat = '41.0082',
       lng = '28.9784'
     };
  }

  render() {
    return (
      <Map
        id="myMap"
        options={{
          center: { lat : this.state.lat ,lng : this.state.lng },
          zoom: 8
        }}
        onMapLoad={map => {
          var marker = new window.google.maps.Marker({
            position: { lat :this.state.lat, lng: this.state.lng },
            map: map,
            title: 'Hello Istanbul!'
          });
        }}
      />
    );
  }
}

render(<App />, document.getElementById('root'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM