728x90
1. 문제상황
현재 현위치 인포윈도우(말풍선)는 위 사진과 같다. 딱 봐도 예쁘지 않다.ㅋㅋㅋㅋ 그래서 인포윈도우를 커스텀하려고 한다!
일단 현위치에 마커를 찍는 방법은 아래 포스팅을 참고하자!
2022.04.12 - [그 땐 IT활동했지/그 땐 영일영 근무했지] - [010/API] Kakao Map API | 현위치 표시하기
(공식문서도 참고!https://apis.map.kakao.com/web/sample/removableCustomOverlay/ )
2. 현위치 인포윈도우 꾸미기!
//map.html
// 지도에 마커와 인포윈도우를 표시하는 함수입니다
function displayMarker(locPosition, message) {
var imageSize = new kakao.maps.Size(48, 53);
var markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize);
var marker = new kakao.maps.Marker({
map: map,
position: locPosition,
image : markerImage,
});
// 커스텀 오버레이에 표시할 컨텐츠 입니다
var content = '<div class="wrap">' +
' <div class="info">' +
' <div class="info-content">현위치</div>' +
' <div class="close" onclick="closeOverlay()" title="닫기"></div>' +
' </div>' +
'</div>';
// 마커 위에 커스텀오버레이를 표시합니다
var overlay = new kakao.maps.CustomOverlay({
content: content,
map: map,
position: locPosition
});
// 마커를 클릭했을 때 커스텀 오버레이를 표시합니다
kakao.maps.event.addListener(marker, 'click', function() {
overlay.setMap(map);
});
// 커스텀 오버레이를 닫기 위해 호출되는 함수입니다
function closeOverlay() {
overlay.setMap(null);
}
// 지도 중심좌표를 접속위치로 변경합니다
map.setCenter(locPosition);
}
👉🏻나는 현위치의 인포윈도우를 커스텀하기 때문에 displayMarker 함수를 수정했다! 코드를 하나씩 살펴보자!
(displayMarker를 실행하는 함수이자 현위치를 찾는 함수인 currentLocation은 다음 글을 참고하자!)
2022.04.12 - [그 땐 IT활동했지/그 땐 영일영 근무했지] - [010/API] Kakao Map API | 현위치 표시하기
// 커스텀 오버레이에 표시할 컨텐츠 입니다
var content = '<div class="wrap">' +
' <div class="info">' +
' <div class="info-content">현위치</div>' +
' <div class="close" onclick="closeOverlay()" title="닫기"></div>' +
' </div>' +
'</div>';
👉🏻먼저 커스텀 오버레이(=인포윈도우)의 내용을 적어준다. html 코드를 적어주면 된다.
// 마커 위에 커스텀오버레이를 표시합니다
var overlay = new kakao.maps.CustomOverlay({
content: content,
map: map,
position: locPosition
});
👉🏻kakao map API의 CustomOverlay메서드를 이용해 인포윈도우를 띄운다.
- content: 인포윈도우 내용
- map: 인포윈도우를 띄울 지도
- position: 인포윈도우 위치, 여기서 locPosition은 현위치를 불러오는 함수(currentLocation)에서 받아온 현위치이다.
// 마커를 클릭했을 때 커스텀 오버레이를 표시합니다
kakao.maps.event.addListener(marker, 'click', function() {
overlay.setMap(map);
});
// 커스텀 오버레이를 닫기 위해 호출되는 함수입니다
function closeOverlay() {
overlay.setMap(null);
}
👉🏻마커를 클릭했을 때 인포윈도우를 띄우는 이벤트와 x버튼을 누르면 인포윈도우를 닫는 함수를 정의한다.
.wrap {
position: absolute;
left: -3.5rem;
bottom: 50px;
width: 120px;
height: 49px;
margin-left: -144px;
text-align: left;
overflow: hidden;
font-size: 12px;
font-family: 'Malgun Gothic', dotum, '돋움', sans-serif;
line-height: 1.5;
}
.wrap * {
padding: 0;
margin: 0;
}
.wrap .info {
width: 120px;
height: 37px;
border-radius: 5px;
overflow: hidden;
background: #fff;
border: 0;
box-shadow: 0 1px 2px #888;
}
.info .info-content {
padding: 5px 0 0 20px;
height: 37px;
background: #fff;
border-bottom: 1px solid #fff;
font-size: 18px;
font-weight: bold;
}
.info .close {
position: absolute;
top: 10px;
right: 10px;
color: #888;
width: 17px;
height: 17px;
background: url('https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/overlay_close.png');
}
.info .close:hover {
cursor: pointer;
}
.info:after {
content: '';
position: absolute;
margin-left: -12px;
left: 50%;
bottom: 0;
width: 22px;
height: 12px;
background: url('https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/vertex_white.png')
}
👉🏻CSS파일은 다음과 같다! 이 역시 공식문서에 나와있어서 가져와서 본인의 입맛대로 고치면 될 것 같다ㅎㅎ
728x90
'그 땐 IT활동했지 > 그 땐 영일영 근무했지' 카테고리의 다른 글
[010/API] Naver API | 블로그, 카페 글 크롤링 해오기 (0) | 2022.04.19 |
---|---|
[010/API]Kakao Map API | 로드뷰 넣기 (0) | 2022.04.18 |
[010/API] Kakao Map API | 통신사 카테고리 넣기 (1) | 2022.04.14 |
[010/API] Kakao Map API | 마커 커스텀하기 (0) | 2022.04.13 |
[010/API] Kakao Map API | 현위치 표시하기 (0) | 2022.04.12 |