반응형
kakao sdk.js 는 로드되었을지 몰라도 latlng method 가 로드되기 전에 호출될 경우 발생하는 문제이다.
다음과 같이 수정하여 해결하였다.
sdk.js 호출시 파라미터에 autoload=false 를 추가해주었다.
<script
async
src={`https://dapi.kakao.com/v2/maps/sdk.js?appkey=${KAKAO_JAVASCRIPT_APP_KEY}&autoload=false`}
></script>
그다음 latlng 메소드가 호출되는 부분을 kakao.maps.load callback 처리해주었다.
useEffect(() => {
if (kakao) {
kakao.maps.load(() => {
var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스
var options = {
//지도를 생성할 때 필요한 기본 옵션
center: new kakao.maps.LatLng(Number(lat), Number(lng)), //지도의 중심좌표.
level: 3, //지도의 레벨(확대, 축소 정도)
};
var map = new kakao.maps.Map(container as HTMLDivElement, options);
var markerPosition = new kakao.maps.LatLng(Number(lat), Number(lng));
// 마커를 생성합니다
var marker = new kakao.maps.Marker({
position: markerPosition,
});
// 마커가 지도 위에 표시되도록 설정합니다
marker.setMap(map);
});
}
}, [lat, lng]);
반응형
'웹프로그래밍 > Javascript' 카테고리의 다른 글
[Next.js] Error: fetch for over 2MB of data can not be cached (0) | 2024.02.25 |
---|---|
[NextAuth] auth redirect 로컬 포트 변경하기 (0) | 2024.02.21 |
window.open 새로운 윈도우 창에 post 로 보내기 (0) | 2022.05.31 |
validate JSON (JSON 여부 검사) (0) | 2020.07.08 |
get only text by clipboard (0) | 2020.07.08 |