Skip to content

Commit b29bc65

Browse files
committed
fix: add isMapReady state to MarkerMap and use it for conditional rendering
1 parent e437335 commit b29bc65

File tree

2 files changed

+30
-24
lines changed

2 files changed

+30
-24
lines changed

src/Features/MarkerMap/MarkerMap.tsx

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ const MarkerMap = ({
5454
coreStyle,
5555
coopGestures,
5656
route,
57+
isMapReady,
5758
} = useMarkerMap({
5859
baseMapView,
5960
center,
@@ -105,31 +106,32 @@ const MarkerMap = ({
105106
onMapClick?.(e.lngLat.lng, e.lngLat.lat);
106107
}}
107108
>
108-
{markers.filter(isValidMarker).map((m) => (
109-
<Marker
110-
key={m.id}
111-
longitude={m.lng}
112-
latitude={m.lat}
113-
anchor="bottom"
114-
onClick={(e) => {
115-
e.originalEvent.stopPropagation();
116-
m.id && handleMarkerClick(m.id, Boolean(m.Tooltip));
117-
}}
118-
>
119-
<Box
120-
component="div"
121-
onMouseEnter={() => {
122-
m.id && handleMarkerHover(m.id, Boolean(m.Tooltip));
109+
{isMapReady &&
110+
markers.filter(isValidMarker).map((m) => (
111+
<Marker
112+
key={m.id}
113+
longitude={m.lng}
114+
latitude={m.lat}
115+
anchor="bottom"
116+
onClick={(e) => {
117+
e.originalEvent.stopPropagation();
118+
m.id && handleMarkerClick(m.id, Boolean(m.Tooltip));
123119
}}
124-
onMouseLeave={() => handleMarkerHover(null)}
125-
style={{ cursor: m.Tooltip ? "pointer" : "default" }}
126120
>
127-
{m.IconComponent ? <m.IconComponent {...m.iconProps} /> : <DefaultMarker color={m.color} variant={m.variant} />}
128-
</Box>
129-
</Marker>
130-
))}
121+
<Box
122+
component="div"
123+
onMouseEnter={() => {
124+
m.id && handleMarkerHover(m.id, Boolean(m.Tooltip));
125+
}}
126+
onMouseLeave={() => handleMarkerHover(null)}
127+
style={{ cursor: m.Tooltip ? "pointer" : "default" }}
128+
>
129+
{m.IconComponent ? <m.IconComponent {...m.iconProps} /> : <DefaultMarker color={m.color} variant={m.variant} />}
130+
</Box>
131+
</Marker>
132+
))}
131133

132-
{selectedMarker?.Tooltip && (
134+
{isMapReady && selectedMarker?.Tooltip && (
133135
<Popup
134136
longitude={isNumber(selectedMarker.lng) ? selectedMarker.lng : 0}
135137
latitude={isNumber(selectedMarker.lat) ? selectedMarker.lat : 0}
@@ -145,7 +147,7 @@ const MarkerMap = ({
145147
</Popup>
146148
)}
147149

148-
{route && (
150+
{isMapReady && route && (
149151
<Source type="geojson" data={route}>
150152
<Layer
151153
type="line"

src/Features/MarkerMap/useMarkerMap.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const useMarkerMap = ({
2727
const mapRef = useRef<MapRef | null>(null);
2828
const [route, setRoute] = useState<Feature<LineString, GeoJsonProperties> | null>(null);
2929
const [selected, setSelected] = useState<string | number | null>(openPopup ?? null);
30+
const [isMapReady, setIsMapReady] = useState(false);
3031

3132
const initialCenter = useMemo(() => {
3233
if (isArray(center)) {
@@ -59,7 +60,9 @@ const useMarkerMap = ({
5960
const handleMapLoad = () => {
6061
const map = mapRef.current?.getMap?.();
6162
if (map) {
62-
map.setStyle(mapStyle);
63+
map.once("idle", () => {
64+
setIsMapReady(true);
65+
});
6366
}
6467
};
6568

@@ -101,6 +104,7 @@ const useMarkerMap = ({
101104
handleMarkerClick,
102105
handleMarkerHover,
103106
initialCenter,
107+
isMapReady,
104108
mapRef,
105109
route,
106110
selected,

0 commit comments

Comments
 (0)