관리 메뉴

웹개발자의 기지개

[Javascript] kakao map 여러개의 마커 표시하기 (카카오지도) 본문

javascript

[Javascript] kakao map 여러개의 마커 표시하기 (카카오지도)

http://portfolio.wonpaper.net 2021. 9. 1. 04:14

 

상기 이미지처럼 여러개의 marker 를 띄우는 방법을 정리해 보았다.

 

먼저, 카카오 지도 api 상에서 해당 키값을 미리 얻어놓도록 하자.

그리고, 아래의 kakao 지도 api 를 참고로 원하는 항목을 만들어 본다.

 

https://apis.map.kakao.com/web/sample/

 

1
2
3
4
5
6
7
8
9
10
11
<style>
.customoverlay {position:relative;bottom:50px;border-radius:6px;border: 1px solid #ccc;border-bottom:2px solid #ddd;float:left;}
.customoverlay:nth-of-type(n) {border:0; box-shadow:0px 1px 2px #888;}
.customoverlay a {display:block;text-decoration:none;color:#111;text-align:center;border-radius:6px;font-size:14px;font-weight:500;overflow:hidden;background: #d95050;background: #d95050 url(https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/arrow_white.png) no-repeat right 14px center;}
.customoverlay .title {display:block;text-align:center;background:#fff;margin-right:35px;padding:10px 15px;font-size:14px;font-weight:500;}
.customoverlay:after {content:'';position:absolute;margin-left:-12px;left:50%;bottom:-12px;width:22px;height:12px;background:url('https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/vertex_white.png')}
</style>
 
<div id="map" style="width:100%;height:450px;"></div>
 
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=키값"></script>
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<script>
var mapContainer = document.getElementById('map'), // 지도를 표시할 div 
    mapOption = { 
        center: new kakao.maps.LatLng(35.8773582128.6042956), // 지도의 중심좌표
        level: 3 // 지도의 확대 레벨
    };
 
var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다
 
// 마커가 표시될 위치입니다 
var markerPosition  = new kakao.maps.LatLng(35.8755582128.6053956); 
 
// 마커를 생성합니다
var marker = new kakao.maps.Marker({
    position: markerPosition
});
 
// 마커가 지도 위에 표시되도록 설정합니다
//marker.setMap(map);
 
// 인포윈도우를 생성합니다
var infowindow = new kakao.maps.InfoWindow({
    content : "<div style='position: absolute; left: 0px; top: 0px;'><div style='width:140px;padding:1px;text-align:center;'>칠성종합시장</div></div>" 
});
  
// 마커 위에 인포윈도우를 표시합니다. 두번째 파라미터인 marker를 넣어주지 않으면 지도 위에 표시됩니다
//infowindow.open(map, marker); 
 
var imageSrc = 'marker01.png';                              // 마커이미지 주소
    imageSize = new kakao.maps.Size(3436);                // 마커이미지의 크기
    imageOption = {offset: new kakao.maps.Point(1736)};   // 마커의 좌표와 일치시킬 이미지 안에서의 좌표설정
      
// 마커의 이미지정보를 가지고 있는 마커이미지를 생성합니다
var markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize, imageOption);
 
 
var arr = new Array();
arr[0= ["칠성시장북편 노상공영주차장",35.8780671960342,128.60320927213"대구 북구 칠성동1가 275-3","1980287267"];
arr[1= ["칠성시장방범초소 노상공영주차장",35.8794483127273,128.602329365994"대구 북구 칠성동2가 409-24","1438742395"];
arr[2= ["신천둔치주차장",35.8767253660639,128.605336577613"대구 북구 칠성동1가 276-1","10068807"];
arr[3= ["칠성시장서편 노상공영주차장",35.8771714863247,128.601464917779"대구 북구 칠성동1가 236-1","27154726"];
arr[4= ["칠성공영주차장",35.8761081400681,128.601660859567"대구 북구 칠성남로 196","20587860"];
arr[5= ["신천교고가도로밑 노상공영주차장",35.875440484078,128.607219820583"대구 북구 칠성동1가 279-1","842394951"];
 
 
var markerTmp;      // 마커
var customOverlay;  // 오버레이
var contentStr;
 
for (var i=0;i<arr.length;i++) {
    markerTmp = new daum.maps.Marker({
        position: new daum.maps.LatLng(arr[i][1],arr[i][2]),
        title: arr[i][0],
        image: markerImage,
        map:map
    });
 
    contentStr = "<div class='customoverlay'><a href='https://map.kakao.com/link/map/"+ arr[i][4+"' target='_blank'><span class='title'>"+ arr[i][0+"</span></a></div>";
 
    customOverlay = new kakao.maps.CustomOverlay({
        map: map,
        position: new daum.maps.LatLng(arr[i][1],arr[i][2]),
        content: contentStr,
        yAnchor: 1 
    });
}
 
 
// 지도 타입 변경 컨트롤을 생성한다
var mapTypeControl = new kakao.maps.MapTypeControl();
 
// 지도의 상단 우측에 지도 타입 변경 컨트롤을 추가한다
map.addControl(mapTypeControl, kakao.maps.ControlPosition.TOPRIGHT);    
 
// 지도에 확대 축소 컨트롤을 생성한다
var zoomControl = new kakao.maps.ZoomControl();
 
// 지도의 우측에 확대 축소 컨트롤을 추가한다
map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
 
// 아래 코드는 지도 위의 마커를 제거하는 코드입니다
// marker.setMap(null);    
</script>
cs

 

 

 

Comments