-
카카오맵API활용해보기 - 지도에 marker 찍기Projects/맛집지도만들기 2022. 8. 26. 07:17
// 지도생성 var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스 var options = { //지도를 생성할 때 필요한 기본 옵션 center: new kakao.maps.LatLng(37.5252, 126.9255), //지도의 중심좌표. level: 6 //지도의 레벨(확대, 축소 정도) }; var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴 // 컨트롤러 생성하기 (일반지도만) var zoomControl = new kakao.maps.ZoomControl(); map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT); */ ********************************************************** 2. 더미데이터 준비하기 (제목, 주소, url, 카테고리) */ const dataSet = [ { title: "희락돈까스", address: "서울 영등포구 양산로 210", url: "https://www.youtube.com/watch?v=1YOJbOUR4vw&t=88s", category: "양식", }, { title: "즉석우동짜장", address: "서울 영등포구 대방천로 260", url: "https://www.youtube.com/watch?v=1YOJbOUR4vw&t=88s", category: "한식", }, { title: "아카사카", address: "서울 서초구 서초대로74길 23", url: "https://www.youtube.com/watch?v=1YOJbOUR4vw&t=88s", category: "일식", }, ]; // 주소 - 좌표 변환 객체를 생성합니다. var geocoder = new kakao.maps.services.Geocoder(); for (var i = 0; i < dataSet.length; i++){ geocoder.addressSearch(dataSet[i].address, function(result, status) { // 정상적으로 검색이 완료됐으면 if (status === kakao.maps.services.Status.OK) { var coords = new kakao.maps.LatLng(result[0].y, result[0].x); // 결과값으로 받은 위치를 마커로 표시합니다 var marker = new kakao.maps.Marker({ map: map, // 마커를 표시할 지도 position: coords, // 마커를 표시할 위치 }); } }); }
위의 코드를 비동기처리로 해보자
// 비동기 처리 var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스 var options = { //지도를 생성할 때 필요한 기본 옵션 center: new kakao.maps.LatLng(37.5252, 126.9255), //지도의 중심좌표. level: 6 //지도의 레벨(확대, 축소 정도) }; var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴 // 1. 컨트롤러 생성하기 (일반지도만) // 지도 확대 축소를 제어할 수 있는 줌 컨트롤을 생성합니다 var zoomControl = new kakao.maps.ZoomControl(); map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT); /* ********************************************************** 2. 더미데이터 준비하기 (제목, 주소, url, 카테고리) */ const dataSet = [ { title: "희락돈까스", address: "서울 영등포구 양산로 210", latlng : new kakao.maps.LatLng(), url: "https://www.youtube.com/watch?v=1YOJbOUR4vw&t=88s", category: "양식", }, { title: "즉석우동짜장", address: "서울 영등포구 대방천로 260", latlng : new kakao.maps.LatLng(), url: "https://www.youtube.com/watch?v=1YOJbOUR4vw&t=88s", category: "한식", }, { title: "아카사카", address: "서울 서초구 서초대로74길 23", latlng : new kakao.maps.LatLng(), url: "https://www.youtube.com/watch?v=1YOJbOUR4vw&t=88s", category: "일식", }, ]; // 데이터의 길이 만큼 for문 돌기 // 주소 - 좌표 변환 객체를 생성합니다. var geocoder = new kakao.maps.services.Geocoder(); // 비동기 함수 async function setMap() { for (var i=0; i < dataSet.lenth; i++){ let position = await getCoordsByAddress(dataSet[i].address); var marker = new kakao.maps.Marker({ map: map, // 마커를 표시할 지도 position: position, }); } } var geocoder = new kakao.maps.services.Geocoder(); function getCoordsByAddress(address) { // promise 형태로 반환 return new Promise((resolve, reject) => { // 주소로 좌표를 검색합니다 geocoder.addressSearch(address, function (result, status) { // 정상적으로 검색이 완료됐으면 if (status === kakao.maps.services.Status.OK) { var coords = new kakao.maps.LatLng(result[0].y, result[0].x); return resolve(coords); } reject(new Error("getCoordsByAddress Error: not valid Address")); }); }); } async function setMap() { for (var i = 0; i < dataSet.length; i++) { let position = await getCoordsByAddress(dataSet[i].address); console.log(position); // 마커를 생성합니다 var marker = new kakao.maps.Marker({ map: map, // 마커를 표시할 지도 // position: positions[i].latlng, // 마커를 표시할 위치 position: position, // title: positions[i].title, // 마커의 타이틀, 마커에 마우스를 올리면 타이틀이 표시됩니다 }); } } setMap();
실행결과 'Projects > 맛집지도만들기' 카테고리의 다른 글
카카오맵API활용해보기 - 상세조회+유투브썸네일 (0) 2022.09.13 카카오 API를 활용해서 지도 만들기 (0) 2022.08.25 맛집지도 사이트 뼈대 만들기 (2) 2022.08.24