가지고있는 정보를 가지고 카카오 맵 api 이용

import React, { useEffect, useState } from ‘react’;
import { useGetAllCafes } from ‘…/…/…/hooks/getAllCafes’;
import { ROUTE } from ‘…/…/…/routes/Routes’;
import { useNavigate } from ‘react-router-dom’;
const { kakao } = window;

const Map = (props) => {
const [markers, setMarkers] = useState([]);
const keyword = props.searchKeyword;
const { mutate: mutateAllCafes, data: allCafesData } = useGetAllCafes();
const [resultCafe, setResultCafe] = useState([]);
const navigate = useNavigate();

useEffect(() => {
if (keyword) {
mutateAllCafes();
} else {
alert(‘검색어를 입력해주세요.’);
}
}, [keyword]);

useEffect(() => {
removeMarker();
removeAllChildNodes(‘places-list’);

if (allCafesData && allCafesData.cafes) {
  const nameResults =
    allCafesData?.cafes.filter((cafe) => cafe.name.includes(keyword)) || [];
  setResultCafe(nameResults.length > 0 ? nameResults : []);

  if (nameResults.length === 0) {
    const addressResults =
      allCafesData?.cafes.filter((cafe) =>
        cafe.road_addr.includes(keyword),
      ) || [];
    setResultCafe(addressResults);
  }
}

}, [keyword, allCafesData]);

useEffect(() => {
let script;

if (resultCafe.length > 0) {
  const existingScript = document.getElementById('kakaoMapScript');
  if (existingScript) {
    document.head.removeChild(existingScript);
  }

  script = document.createElement('script');
  script.id = 'kakaoMapScript';
  script.async = true;
  script.src = `https://dapi.kakao.com/v2/maps/sdk.js?appkey=0ed2e6ed111d9ca9a86f82d2bc80a5a7`;
  document.head.appendChild(script);

  script.onload = () => {
    kakao.maps.load(() => {
      const mapContainer = document.getElementById('map');
      const mapOption = {
        center: new kakao.maps.LatLng(37.566826, 126.9786567),
        level: 3,
      };
      const map = new kakao.maps.Map(mapContainer, mapOption);

      resultCafe.forEach((cafe, index) => {
        const coords = new kakao.maps.LatLng(cafe.latitude, cafe.longitude);
        const marker = new kakao.maps.Marker({
          map: map,
          position: coords,
          title: cafe.name,
        });

        marker.setZIndex(index + 1);

        kakao.maps.event.addListener(marker, 'click', function () {
          const infowindow = new kakao.maps.InfoWindow({
            content: `<div style="width:150px;text-align:center;padding:6px 0;">${cafe.intro}</div>`,
          });
          infowindow.open(map, marker);
        });

        const listEl = document.getElementById('places-list');
        const itemEl = getListItem(index, cafe);
        listEl.appendChild(itemEl);
      });

      // 기존에 맵을 그릴 때 마커를 중심으로 설정했으므로,
      // 새로운 마커가 추가될 때마다 중심을 변경해 줍니다.
      // bounds를 새로 만들어서 기존의 bounds에 새로운 마커의 좌표를 확장시킵니다.
      const bounds = new kakao.maps.LatLngBounds();
      resultCafe.forEach((cafe) => {
        bounds.extend(new kakao.maps.LatLng(cafe.latitude, cafe.longitude));
      });
      map.setBounds(bounds);
    });
  };

  script.onerror = () => {
    console.error('Failed to load Kakao maps API.');
  };
}

return () => {
  if (script) {
    document.head.removeChild(script);
  }
};

}, [resultCafe]);

const handleItemClick = (postId) => {
navigate(${ROUTE.CAFE_DETAIL_PAGE.link}/${postId});
};

function getListItem(index, places) {
const el = document.createElement(‘li’);
let itemStr = <div class="info"> <span class="marker marker_${index + 1}"> ${index + 1} </span> <a href="${ROUTE.CAFE_DETAIL_PAGE.link}/${places._id}"> <h5 class="info-item place-name">${places.name}</h5> <span class="info-item road-address-name">${places.road_addr}</span> <span class="info-item tel">${places.phone_number}</span> </a> </div> ;

el.innerHTML = itemStr;
el.className = 'item';

return el;

}

function removeMarker() {
for (let i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
setMarkers([]);
}

function removeAllChildNodes(parentId) {
const parent = document.getElementById(parentId);
while (parent.firstChild) {
parent.removeChild(parent.firstChild);
}
}

return (


{/* 지도를 그릴 컨테이너에 height를 설정해 주세요. */}



{props.searchKeyword}
검색 결과








    );
    };

    export default Map;

    이런식으로 코드를 작성하여 한참을 노력중인데
    마커는 잘 찍히고 리스트도 잘 추가되는데

    마커 뒤의 배경 지도가 보여지질 않습니다…
    비동기적 처리때문인지 도무지 모르겠네요…

    스크립트에 autoload 파라미터를 추가해서 확인해 주세요.
    script.src = https://dapi.kakao.com/v2/maps/sdk.js?appkey=${JS_APP_KEY}&autoload=false;
    https://apis.map.kakao.com/web/documentation/#load_load