2017-01-31 20 views
0

Reactでは、私の状態のオブジェクトの配列によって各マーカーが決定されるマーカーをGoogleマップに挿入しようとしています。現在、22個のオブジェクトのreducedSites配列がある場合、そのうちの1〜3個だけがマーカーとしてレンダリングされます。これは、どれくらいのオブジェクトが状態にあっても同じように見えます。React + GoogleマップJS APIは、状態からマーカーを動的にレンダリングします

は、地図の子として<Marker></Marker>コンポーネントを配置し、positionプロパティを設定するために、あなたの配列を使用し

renderMap() { 
    const map = document.querySelector('#map') 
    this.map = new google.maps.Map(map, { 
     center: { lat: this.state.lat, lng: this.state.lng }, 
     zoom: 8 
    }); 
    const _this = this 
    let markers = this.state.reducedSites.map(function(site) { 
     return new google.maps.Marker({ 
     position: {lat: parseInt(site.latitude), lng: parseInt(site.longitude)}, 
     map: _this.map 
     }); 
    }); 
    } 
+0

'new google.maps.Marker'を返すところでは、MarkerOptionsプロパティは' setMap'ではなく 'map'でなければなりません。 'map:map'。これはすでに地図上にマーカーをプロットします。では、あなたのコードで 'marker.setMap(map)'は何をすべきでしょうか? – MrUpsidown

+0

私はちょうどそれを行いましたが、まだ20を超える州にもかかわらず1-3個のマーカーは表示されません。 –

答えて

0

を更新しました。

<Map google={this.props.google} 
     style={{width: '100%', height: '100%', position: 'relative'}} 
     className={'map'} 
     zoom={14}> 
     <Marker 
     name={'SOMA'} 
     position={{lat: this.state.markersArray[0].lat, lng: this.state.markersArray[0].lng}} /> 
    </Marker> 
    </Map> 

あなたの位置の配列の値を変更する場合)SETSTATEを(呼び出していることを確認しますので、自動的に反応することがDOMに値が変更されるたびにレンダリングします。これは動的にレンダリングする方法です。 parseFloat

https://github.com/fullstackreact/google-maps-react

+0

この反応コンポーネントを使用していないので、どのように統合するのか分かりません。 –

+0

これはおそらくあなたの人生を楽にしてくれるでしょう。ちょうどnpm install --save google-maps-reactを実行してから、ファイルインポートマップの一番上に 'google-maps-react'を追加します。しかし、あなたの既存のコードの問題はどうでしたか? –

+0

マーカーが表示されません。私が 'setMap:map'を呼び出すと、ForEachでマーカーを繰り返し処理すると、InvalidValueError:setMap:Mapのインスタンスではありません。 StreetViewPanorama'のインスタンスではありません。しかし、forEach反復を削除しても、エラーはありませんが、まだレンダリングされたマーカーはありません。 –

関連する問題