지도 위에 로드뷰 도로를 올리고, 로드뷰 도로를 클릭하거나, 마커를 이동시켜 로드뷰를 표시합니다.
var mapWrapper = document.getElementById('mapWrapper'); //지도를 감싸고 있는 DIV태그 var mapContainer = document.getElementById('map'), // 지도를 표시할 div mapCenter = new kakao.maps.LatLng(33.450422139819736 , 126.5709139924533), // 지도의 가운데 좌표 mapOption = { center: mapCenter, // 지도의 중심좌표 level: 3 // 지도의 확대 레벨 }; // 지도를 표시할 div와 지도 옵션으로 지도를 생성합니다 var map = new kakao.maps.Map(mapContainer, mapOption); map.addOverlayMapTypeId(kakao.maps.MapTypeId.ROADVIEW); //지도 위에 로드뷰 도로 올리기 var rvContainer = document.getElementById('roadview'); //로드뷰를 표시할 div var rv = new kakao.maps.Roadview(rvContainer); //로드뷰 객체 var rvClient = new kakao.maps.RoadviewClient(); //좌표로부터 로드뷰 파노ID를 가져올 로드뷰 helper객체 toggleRoadview(mapCenter); // 마커 이미지를 생성합니다. var markImage = new kakao.maps.MarkerImage( 'https://t1.daumcdn.net/localimg/localimages/07/2018/pc/roadview_minimap_wk_2018.png', new kakao.maps.Size(26, 46), { // 스프라이트 이미지를 사용합니다. // 스프라이트 이미지 전체의 크기를 지정하고 spriteSize: new kakao.maps.Size(1666, 168), // 사용하고 싶은 영역의 좌상단 좌표를 입력합니다. // background-position으로 지정하는 값이며 부호는 반대입니다. spriteOrigin: new kakao.maps.Point(705, 114), offset: new kakao.maps.Point(13, 46) } ); // 드래그가 가능한 마커를 생성합니다. var rvMarker = new kakao.maps.Marker({ image : markImage, position: mapCenter, draggable: true, map: map }); //마커에 dragend 이벤트를 할당합니다 kakao.maps.event.addListener(rvMarker, 'dragend', function(mouseEvent) { var position = rvMarker.getPosition(); //현재 마커가 놓인 자리의 좌표 toggleRoadview(position); //로드뷰를 토글합니다 }); //지도에 클릭 이벤트를 할당합니다 kakao.maps.event.addListener(map, 'click', function(mouseEvent){ // 현재 클릭한 부분의 좌표를 리턴 var position = mouseEvent.latLng; rvMarker.setPosition(position); toggleRoadview(position); //로드뷰를 토글합니다 }); //로드뷰 toggle함수 function toggleRoadview(position){ //전달받은 좌표(position)에 가까운 로드뷰의 panoId를 추출하여 로드뷰를 띄웁니다 rvClient.getNearestPanoId(position, 50, function(panoId) { if (panoId === null) { rvContainer.style.display = 'none'; //로드뷰를 넣은 컨테이너를 숨깁니다 mapWrapper.style.width = '100%'; map.relayout(); } else { mapWrapper.style.width = '50%'; map.relayout(); //지도를 감싸고 있는 영역이 변경됨에 따라, 지도를 재배열합니다 rvContainer.style.display = 'block'; //로드뷰를 넣은 컨테이너를 보이게합니다 rv.setPanoId(panoId, position); //panoId를 통한 로드뷰 실행 rv.relayout(); //로드뷰를 감싸고 있는 영역이 변경됨에 따라, 로드뷰를 재배열합니다 } }); }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>로드뷰 도로를 이용하여 로드뷰 생성하기</title> <style> .map_wrap {overflow:hidden;height:330px} </style> </head> <body> <div class="map_wrap"> <div id="mapWrapper" style="width:50%;height:300px;float:left"> <div id="map" style="width:100%;height:100%"></div> <!-- 지도를 표시할 div 입니다 --> </div> <div id="rvWrapper" style="width:50%;height:300px;float:left"> <div id="roadview" style="width:100%;height:100%"></div> <!-- 로드뷰를 표시할 div 입니다 --> </div> </div> <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=발급받은 APP KEY를 사용하세요"></script> <script> var mapWrapper = document.getElementById('mapWrapper'); //지도를 감싸고 있는 DIV태그 var mapContainer = document.getElementById('map'), // 지도를 표시할 div mapCenter = new kakao.maps.LatLng(33.450422139819736 , 126.5709139924533), // 지도의 가운데 좌표 mapOption = { center: mapCenter, // 지도의 중심좌표 level: 3 // 지도의 확대 레벨 }; // 지도를 표시할 div와 지도 옵션으로 지도를 생성합니다 var map = new kakao.maps.Map(mapContainer, mapOption); map.addOverlayMapTypeId(kakao.maps.MapTypeId.ROADVIEW); //지도 위에 로드뷰 도로 올리기 var rvContainer = document.getElementById('roadview'); //로드뷰를 표시할 div var rv = new kakao.maps.Roadview(rvContainer); //로드뷰 객체 var rvClient = new kakao.maps.RoadviewClient(); //좌표로부터 로드뷰 파노ID를 가져올 로드뷰 helper객체 toggleRoadview(mapCenter); // 마커 이미지를 생성합니다. var markImage = new kakao.maps.MarkerImage( 'https://t1.daumcdn.net/localimg/localimages/07/2018/pc/roadview_minimap_wk_2018.png', new kakao.maps.Size(26, 46), { // 스프라이트 이미지를 사용합니다. // 스프라이트 이미지 전체의 크기를 지정하고 spriteSize: new kakao.maps.Size(1666, 168), // 사용하고 싶은 영역의 좌상단 좌표를 입력합니다. // background-position으로 지정하는 값이며 부호는 반대입니다. spriteOrigin: new kakao.maps.Point(705, 114), offset: new kakao.maps.Point(13, 46) } ); // 드래그가 가능한 마커를 생성합니다. var rvMarker = new kakao.maps.Marker({ image : markImage, position: mapCenter, draggable: true, map: map }); //마커에 dragend 이벤트를 할당합니다 kakao.maps.event.addListener(rvMarker, 'dragend', function(mouseEvent) { var position = rvMarker.getPosition(); //현재 마커가 놓인 자리의 좌표 toggleRoadview(position); //로드뷰를 토글합니다 }); //지도에 클릭 이벤트를 할당합니다 kakao.maps.event.addListener(map, 'click', function(mouseEvent){ // 현재 클릭한 부분의 좌표를 리턴 var position = mouseEvent.latLng; rvMarker.setPosition(position); toggleRoadview(position); //로드뷰를 토글합니다 }); //로드뷰 toggle함수 function toggleRoadview(position){ //전달받은 좌표(position)에 가까운 로드뷰의 panoId를 추출하여 로드뷰를 띄웁니다 rvClient.getNearestPanoId(position, 50, function(panoId) { if (panoId === null) { rvContainer.style.display = 'none'; //로드뷰를 넣은 컨테이너를 숨깁니다 mapWrapper.style.width = '100%'; map.relayout(); } else { mapWrapper.style.width = '50%'; map.relayout(); //지도를 감싸고 있는 영역이 변경됨에 따라, 지도를 재배열합니다 rvContainer.style.display = 'block'; //로드뷰를 넣은 컨테이너를 보이게합니다 rv.setPanoId(panoId, position); //panoId를 통한 로드뷰 실행 rv.relayout(); //로드뷰를 감싸고 있는 영역이 변경됨에 따라, 로드뷰를 재배열합니다 } }); } </script> </body> </html>