Showing
1 changed file
with
47 additions
and
6 deletions
... | @@ -2,19 +2,60 @@ | ... | @@ -2,19 +2,60 @@ |
2 | <html> | 2 | <html> |
3 | <head> | 3 | <head> |
4 | <meta charset="utf-8"/> | 4 | <meta charset="utf-8"/> |
5 | - <title>Kakao 지도 시작하기</title> | 5 | + <title>키워드로 장소 검색하기</title> |
6 | </head> | 6 | </head> |
7 | <body> | 7 | <body> |
8 | - <div id="map" style="width:500px;height:400px;"></div> | 8 | + <div id="map" style="width:100%;height:350px;"></div> |
9 | <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=c48bde8b1f66c569193a37cbc58d1c87"></script> | 9 | <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=c48bde8b1f66c569193a37cbc58d1c87"></script> |
10 | <script> | 10 | <script> |
11 | - var container = document.getElementById('map'); | 11 | + // 마커를 클릭하면 장소명을 표출할 인포윈도우 입니다 |
12 | - var options = { | 12 | + const infowindow = new kakao.maps.InfoWindow({zIndex:1}); |
13 | - center: new kakao.maps.LatLng(33.450701, 126.570667), | 13 | + //지도를 표시할 div |
14 | + const container = document.getElementById('map'); | ||
15 | + const options = { | ||
16 | + center: new kakao.maps.LatLng(37.566826, 126.9786567), | ||
14 | level: 3 | 17 | level: 3 |
15 | }; | 18 | }; |
19 | + const map = new kakao.maps.Map(container, options); | ||
20 | + // 장소 검색 객체를 생성합니다 | ||
21 | + const ps = new kakao.maps.services.Places(); | ||
22 | + // 키워드로 장소를 검색합니다 | ||
23 | + ps.keywordSearch('수원 영화관', placesSearchCB); | ||
24 | + | ||
25 | + // 키워드 검색 완료 시 호출되는 콜백함수 입니다 | ||
26 | + function placesSearchCB (data, status, pagination) { | ||
27 | + if (status === kakao.maps.services.Status.OK) { | ||
28 | + // 검색된 장소 위치를 기준으로 지도 범위를 재설정하기위해 | ||
29 | + // LatLngBounds 객체에 좌표를 추가합니다 | ||
30 | + let bounds = new kakao.maps.LatLngBounds(); | ||
31 | + | ||
32 | + for (let i=0; i<data.length; i++) { | ||
33 | + displayMarker(data[i]); | ||
34 | + bounds.extend(new kakao.maps.LatLng(data[i].y, data[i].x)); | ||
35 | + } | ||
36 | + | ||
37 | + // 검색된 장소 위치를 기준으로 지도 범위를 재설정합니다 | ||
38 | + map.setBounds(bounds); | ||
39 | + } | ||
40 | + } | ||
41 | + // 지도에 마커를 표시하는 함수입니다 | ||
42 | + function displayMarker(place) { | ||
43 | + | ||
44 | + // 마커를 생성하고 지도에 표시합니다 | ||
45 | + let marker = new kakao.maps.Marker({ | ||
46 | + map: map, | ||
47 | + position: new kakao.maps.LatLng(place.y, place.x) | ||
48 | + }); | ||
49 | + | ||
50 | + // 마커에 클릭이벤트를 등록합니다 | ||
51 | + kakao.maps.event.addListener(marker, 'click', function() { | ||
52 | + // 마커를 클릭하면 장소명이 인포윈도우에 표출됩니다 | ||
53 | + infowindow.setContent('<div style="padding:5px;font-size:12px;">' + place.place_name + '</div>'); | ||
54 | + infowindow.open(map, marker); | ||
55 | + }); | ||
56 | + } | ||
57 | + | ||
16 | 58 | ||
17 | - var map = new kakao.maps.Map(container, options); | ||
18 | </script> | 59 | </script> |
19 | </body> | 60 | </body> |
20 | </html> | 61 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment