방명록
- [Vue.js] 카카오 지도 API 커스텀 오버레이 표시되지 않는 문제 및 Vue.js 용 카카오 지도 API 예제2023년 02월 09일 15시 36분 32초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
1. 카카오 지도 API 커스텀 오버레이 표시되지 않는 문제
새로고침 시 커스텀 오버레이가 화면에 표시되지 않는 문제가 발생했다. setTimeout으로 1초 멈춘 후 커스텀 오버레이를 그리도록 하여 문제를 해결했다.
mounted() { if (window.kakao && window.kakao.maps) { this.initMap() this.displayCustomOverlay() } // 아래는 새로고침시 실행되는 코드이다. 커스텀 오버레이가 표시되지 않는 문제가 발생하였다. // setTimeout으로 1초 멈춘 후 커스텀 오버레이를 그리도록하여 문제를 해결했다. else { const script = document.createElement('script') /* global kakao */ script.onload = () => kakao.maps.load(this.initMap) script.src = `http://dapi.kakao.com/v2/maps/sdk.js?autoload=false&appkey=${process.env.VUE_APP_KAKAOMAP_KEY}` document.head.appendChild(script) setTimeout(() => { this.displayCustomOverlay() }, 1000) } },
😛 Vue.js 용 카카오 지도 API 예제: Vue.js용 카카오 지도 API 예제이다. 새로고침 시 커스텀 오버레이가 화면에 표시되지 않는 문제로 인해 찾다가 발견했다. 이 예제로 문제를 해결할 수 있었던 것은 아니나 Vue.js에서의 카카오 지도 API 사용법을 참고할만하다(https://codesandbox.io/s/nervous-keldysh-87yxg).
2. 데이터가 원인이었다!
displayCustomOverlay() 메서드에서 이용하는 배열 데이터가 새로 고침(F5)하게 되면 빈 배열되기 때문에 발생한 문제였다. 값이 없으니 오버레이가 실종될 수밖에...
커스텀 오버레이가 레벨(센서 없음, 정상, 경계, 심각, 위험, 통신장애) 데이터에 따라 동적으로 스타일이 변경되어야 하기 때문에 computed와 watch를 사용해 데이터에 변경이 생기면 즉시 반영되도록 처리하였다.
computed: { gidSensingLevel() { return this.$store.state.gid .filter((_, i) => this.$store.state.gidManhole.length !== 0) .map((_, i) => Math.max(...this.$store.state.gidManhole[i][1].manholeLevel) ) } }, watch: { // computed를 통해 계산된 gidSensingLevel 값이 변경되는지 감시 // gidSensingLevel 값이 변경되면 displayCustomOverlay() 메서드 호출 gidSensingLevel() { this.displayCustomOverlay() } },
728x90반응형'언어·프레임워크 > Vue.js' 카테고리의 다른 글
[Vue.js] vue-datepicker-next를 이용한 날짜 데이터 바인딩 (0) 2023.02.20 [Vue.js] 카카오 지도 API 작업 중 Uncaught TypeError: Cannot set properties of undefined! (일반 함수를 화살표 함수로 변경) (0) 2023.02.10 [Vue.js] 변화가 즉시 반영되도록 강제 리렌더링 처리(Component Force Rerendering) (0) 2023.02.08 [Vue.js] Axios interceptors 관련, 로그인 후 API호출 시 JWT 토큰이 header에 실리지 않는 문제 (0) 2023.02.02 [Vue.js] 다중 셀렉트박스(select)를 이용한 조회 기능 코드 (0) 2023.01.26 다음글이 없습니다.이전글이 없습니다.댓글