У меня есть компонент реакции окна карты, который принимает объект кошек через реквизиты с координатами lng и lat.
<MapContainer cats={cats} /> ----- This is component below
componentDidMount() {
const map = new mapboxgl.Map({
container: this.mapContainer,
style: 'mapbox://styles/mapbox/streets-v11',
center: [this.state.lng, this.state.lat],
zoom: this.state.zoom
});
map.on('move', () => {
this.setState({
lng: map.getCenter().lng.toFixed(4),
lat: map.getCenter().lat.toFixed(4),
zoom: map.getZoom().toFixed(2)
});
});
//var marker = new mapboxgl.Marker()
//.setLngLat([12.550343, 55.665957])
//.addTo(map);
this.props.cats.map((cat) => {
console.log('test');
var marker = new mapboxgl.Marker()
.setLngLat([cat.lat, cat.lng])
.addTo(this.map);
});
}
Закомментированный раздел кода добавляет штраф маркера карты из-за следования руководству.
Однако в приведенном ниже коде я пытаюсь сопоставить мой объект реквизита кошки, чтобы добавить несколько маркеров, но console.log ('test'); не отображается в консоли, поэтому я, должно быть, делаю что-то не так.
Прошло много времени с тех пор, как я использовал React, пожалуйста, укажите мне правильное направление ?! :)
Исправлено:
this.props.cats был пуст внутри componentDidMount (), поэтому я переместил код внутри componentWillReceiveProps (), который исправил его! :)