I tried to do it in this way.
I want to return multiple <LocationMarker> for each "ev". But it's only returning one <LocationMarker> for each "ev". for loop inside the storm variable is only executing once.
I also tried keeping for loop inside the return function but got an error.
Thanks in Advance
import { useState } from 'react';
import GoogleMapReact from 'google-map-react';
import LocationMarker from './LocationMarker';
import LocationInfoBox from './LocationInfoBox';
const NATURAL_EVENT_SEVERESTORMS = 'severeStorms';
const Map = ({ eventData, center, zoom }) => {
const [locationInfo, setLocationInfo] = useState(null);
const storms = eventData.map((ev) => {
if (ev.categories[0].id === NATURAL_EVENT_SEVERESTORMS) {
for (let i = 0; i < ev.geometry.length; i++) {
return (
<LocationMarker
lat={ev.geometry[i].coordinates[1]}
lng={ev.geometry[i].coordinates[0]}
type='severeStorms'
onClick={() => setLocationInfo({ id: ev.id, title: ev.title })}
/>
);
}
}
return null;
});
return (
<div className='map'>
<GoogleMapReact
bootstrapURLKeys={{ }}
defaultCenter={center}
defaultZoom={zoom}
>
{storms}
</GoogleMapReact>
{locationInfo && <LocationInfoBox info={locationInfo} />}
</div>
);
};
Map.defaultProps = {
center: {
lat: 42.3265,
lng: -122.8756,
},
zoom: 4,
};
export default Map;