본문 바로가기
웹개발/matzip

[웹개발 수업 - 맛집 사이트] 맛집 리스트 만들기 / list / 카카오맵 API

by 오엥?은 2022. 12. 4.
반응형

 

▶️ 맛집 리스트 + 클릭 시 위치이동

 

  •  html 작성 : 리스트 틀을 잡아준다. (<body> 안에 들어감)
<section class="list-container" id="listContainer">
    <ul class="list" id="list">
        <li class="item">
            <span class="info">
                <span class="name-container">
                    <span class="name">용정반점</span>
                    <span class="category">중식</span>
                </span>
                <span class="rating-container">
                    <span class="star-container">
                        <i class="star filled fa-solid fa-star"></i>
                        <i class="star filled fa-solid fa-star"></i>
                        <i class="star filled fa-solid fa-star"></i>
                        <i class="star filled fa-solid fa-star"></i>
                        <i class="star fa-solid fa-star"></i>
                    </span>
                    <span class="score">4.1</span>
                    <span class="count">7건</span>
                    <span class="review-count">리뷰</span>
                </span>
                <span class="open-container">
                    <span class="working">영업 전</span>
                    <span class="hour">17:00에 영업 시작</span>
                </span>
                <span class="address-container">대구 북구 고성동 3가 1층</span>
                <span class="contact">053-123-4567</span>
            </span>
            <img alt="" class="image" src="">
        </li>
    </ul>
</section>
<section class="detail-container" id="detailContainer">
    디테일 담을 곳
</section>
<section class="map-container" id="mapContainer">
    <div class="cover" rel="cover">지도를 불러오고 있습니다</div>
</section>

미리 html + css 로 리스트의 틀 잡아주기

 

  • 데이터베이스에 맛집의 필요한 정보들을 담는 테이블을 생성한다.

place_categories

 

  • 두 테이블에 대한 entity를 만든 후, IDataMapper (Interface) 에 places 테이블의 모든 레코드를 select 하는 selectPlaces 를 만든다.

 

  • DataMapper.xml 에 그에 맞게 쿼리를 작성한다.

 

  • DataService 에 IDataMapper 의 selectPlaces 를 가져와서 return 하는 코드를 작성한다.

 

  • DataController 에 DataService 의 getPlace 를 가져와서 return 하는 코드를 작성한다.

  어노테이션 @Controller 와 @RestController 의 차이점

  ▪️ @Controller 

   - 주로 View 를 반환하기 위해 사용한다.

   - Data 를 반환해야 하는 경우에는 @ResponseBody 어노테이션을 사용하여 JSON 형태로 데이터를 반환한다. 

 

▪️ @RestController

   - @Controller 에 @ResponseBody 가 추가 된 것이다.

   - 주로 JSON 형태로 객체 데이터를 반환하기 위해 사용한다.

 

 

  • javascript 작성 

[웹개발 수업 - 맛집 사이트] 카카오맵 API 적용 방법

👆🏻 미리 넣어 둔 카카오맵의 마커에 클릭 이벤트를 적용해야 한다.

 

Kakao 지도 Web API 가이드 페이지에 가서 '마커에 클릭 이벤트 등록하기' 를 누른다. 

사용 방법은 아래와 같이 설명되어 있다.

 

위의 방법을 응용하여 index.js 를 작성한다.

`matzip_data`.`places` 의 레코드들이 담겨 있는 placeArray 를 만들고 반복문을 돌린다. 

 

그리고 맨 처음에 미리 만들어 둔 리스트의 틀인 html 을 가져와서 작성한다.

DB 에서 레코드를 가져올 수 있도록 주소, 전화번호, 오픈시간 등을 바꿔준다.

바로 밑에 아래와 같은 코드를 작성한다.

1️⃣ 

  DOMParser

  ▪️ DomParser 를 이용하여 문자열(String) 형태의 xml 혹은 html 을 DOM 구조로 변환이 가능하다. 

  ▪️ DOMParser.parseFromString( htmlString, mimeType )

    - 첫 번째 인자로는 HTML 또는 XML을 포함하는 문자열(string)을 받는다.
    - 두 번째 인자로는 mimeType을 받으며, 여기서는 'text/html' 을 받는다.

       : text/html HTML parser를 호출하고, 해당 메소드는 HTMLDocument를 반환한다.

 

DOM 은 프로그래밍 언어는 아니지만 DOM 이 없다면 자바스크립트 언어는 웹 페이지 또는 XML 페이지 및 요소들과 관련된 모델이나 개념들에 대한 정보를 갖지 못하게 된다. 문서의 모든 element - 전체 문서, 헤드, 문서 안의 table, table header, table cell 안의 text - 는 문서를 위한 document object model 의 한 부분이다. 때문에, 이러한 요소들을 DOM 과 자바스크립트와 같은 스크립팅 언어를 통해 접근하고 조작할 수 있는 것이다.

 

 

2️⃣  지도의 중심을 이동시킨다.

 

loadPlaces 함수 내용을 다 작성하고, 현재 위치를 기본 위치로 설정해둔다.

 

이제 위에 함수를 호출해주면 끝!!!!!!!!!!!!!!

 

  • 완성

저장 해 둔 맛집 리스트 + 클릭 시 위치와 클릭했다는 알림 구현

 

 

 

 

반응형