카카오맵 처음 로딩시 지도 깨짐 문제

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
카카오맵 처음 로딩시 지도 깨짐 문제

QA

카카오맵 처음 로딩시 지도 깨짐 문제

본문

안녕하세요 카카오지도로 게시판 리스트 부분 작업중입니다..

https://nlobby.com/visit

마우스로 버튼을 클릭했을때 지도가 노출되고 숨겨지게 만들려고 하는데 문제는

처음 페이지를 로딩했을때 지도가 깨지는 문제가 발생합니다..

지도를 처음부터 오픈했을때는 정상적으로 나오지만 display:none를 했을때 무조건 깨지더군요.. 왜 그런건지 모르겠지만 다른 방법이 없을까 싶어서 질문을 올렸습니다

 

답변 부탁드립니다!

 

이 질문에 댓글 쓰기 :

답변 2

thumb-1794285718_1604915665.8423_730x520.jpg

2개를 한번에 열어보면 2번째부터 호출한 애는 버튼이 왼쪽으로 몰려있는거 처럼 보여요.

처음에 전체 리스트업 된 지도 목록을 먼저 생성한 후에 hide처리를 하면 되지 않을까 싶네요.

아니면 click시에 생성해서 보여주는 건 어떨지 싶네요.

며칠동안 뻘짓한 끝에 노출되게 했네요

카카오지도를 display:none > display:block형식으로 작업하시는 분들은 참고하시는게 좋을것 같습니다

일단 https://apis.map.kakao.com/web/sample/mapRelayout/ 여기 내용을 참고하시는게 좋고

 

핵심은 map.relayout(); 와 map.setCenter(new kakao.maps.LatLng(위도, 경도)); 입니다

 

map.relayout(); 위치는 아무곳이나 상관없지만 

 

map.setCenter(new kakao.maps.LatLng(위도, 경도));의 경우는

버튼을 호출하는 시점 쪽에 넣으시는게 좋으실 것 같습니다.

 


<div id="map_<?php echo $list[$i]['wr_id'] ?>" class="map_area" style="width: 100%; height: 500px; margin-top:50px; border-radius:4px;"></div>
<script>
var mapContainer = document.getElementById("map_<?php echo $list[$i]['wr_id'] ?>"), // 지도를 표시할 div 
mapOption = { 
    center: new kakao.maps.LatLng(<?php echo $list[$i]['wr_5']?>, <?php echo $list[$i]['wr_6']?>), // 지도의 중심좌표
    level: 4// 지도 초기 확대레벨
};
// 지도 생성
var map = new kakao.maps.Map(mapContainer, mapOption);
// 일반 지도와 스카이뷰로 지도 타입을 전환할 수 있는 지도타입 컨트롤을 생성합니다
var mapTypeControl = new kakao.maps.MapTypeControl();
// 지도에 컨트롤을 추가해야 지도위에 표시됩니다
// daum.maps.ControlPosition은 컨트롤이 표시될 위치를 정의하는데 TOPRIGHT는 오른쪽 위를 의미합니다
map.addControl(mapTypeControl, kakao.maps.ControlPosition.TOPRIGHT);
// 지도 확대 축소를 제어할 수 있는  줌 컨트롤을 생성합니다
var zoomControl = new kakao.maps.ZoomControl();
map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
// 마커
var marker = new kakao.maps.Marker({
map: map,
// 지도 중심좌표에 마커를 생성
position: map.getCenter()
});
marker.setMap(map);
//마커를 기준으로 가운데 정렬이 될 수 있도록 추가
var markerPosition = marker.getPosition(); 
map.relayout();    // 지도의 크기가 변동이 있을 경우 함수 호출
map.setCenter(markerPosition);
var content = "<div class=customoverlay>" + 
                          "        <a target='blink' href=http://<?php echo $list[$i]['wr_7'] ?>>" +
                          "            <span class=title><?php echo $list[$i]['wr_subject']; ?></span>" + 
                          "        </a>" +
                          "</div>";
// 커스텀 오버레이가 표시될 위치입니다 
var custPosition = new kakao.maps.LatLng(<?php echo $list[$i]['wr_5'] ?>, <?php echo $list[$i]['wr_6'] ?>);
// 커스텀 오버레이를 생성합니다
var customOverlay = new kakao.maps.CustomOverlay({
    map: map,
    position: custPosition,
    content: content,
    yAnchor: 1
});

$('.visit_line<?php echo $list[$i]["wr_id"] ?> .point_ico').click( function() {
    $('.visit_line<?php echo $list[$i]["wr_id"] ?> .map_area').toggle();
    map.setCenter(new kakao.maps.LatLng(<?php echo $list[$i]['wr_5'] ?>, <?php echo $list[$i]['wr_6'] ?>));
    // 버튼을 클릭했을 때 지도가 노출되고 지도의 위치를 가운데로 잡아줌
});
답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT