웹프로그래밍/Javascript
kakao.maps.LatLng is not a constructor
jihun202
2023. 12. 28. 14:39
반응형
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]);
반응형