어떤 기능 만들 거냐

스크린샷 2023-12-02 13.06.00.png

폼 작성 시 주소를 입력하는 부분이 있는데, 이 부분을 단순 텍스트가 아닌 주소 형식의 텍스트로 입력받기 위해 지도 API를 사용한다.

스크린샷 2023-12-01 12.11.46.png

  1. input 입력 시 장소를 선택할 수 있는 UI 구현을 어떻게 할 것인가
    1. input과 datalist를 사용하기 참고

      스크린샷 2023-12-01 14.49.43.png

      문제!

      ezgif-1-79fac0d191.gif

      • 그런데 input과 datalist를 사용해서 다음과 같이 구현할 경우, API로 검색한 결과가 아닌 사용자가 직접 입력한 input의 값도 적용이 될 수 있음.
        • 이 문제를 해결하기 위해서 input을 직접 입력하는 것을 막고… < 여기부터 꼬이기 시작. 왜냐면 input을 입력해야 search API에 값을 전달해서 사용할 수 있는데
        • datalist에 표시된 것만 값만 사용하게 하려면 어떻게 해야 할까? 라는 고민을 하기 시작
      • 사용자가 입력한 input의 내용은 반영하지 못하게 할 것이라면 select가 적합할 수 있다는 의견을 발견https://stackoverflow.com/questions/30499199/html5-datalist-to-select-only-predefined-options
      • 결론: 그래서 input과 datalist 사용을 포기합니다.
    2. input과 select (또는 직접 구현한 div) 사용하기

      스크린샷 2023-12-01 14.50.49.png

검색어로 장소 선택하면 지도에 핀으로 보여 주기(두 번째 고난) 시작

지도 클릭 시 마커 띄우기

문제 1: 마커를 하나씩만 찍고 싶은데, 여러 개가 찍히는 문제

화면 기록 2023-12-02 21.53.28.mov

T Map 클릭한 위치에 마커 표시하기 예시에 나온 대로

let markers = [] 를 사용한 코드는 문제가 없으나, const [markers, setMarkers] = useState([])를 사용한 방식으로 코드 바꾸면 해당 문제가 발생

왜 이럴까? (ChatGPT의 답변)

해결방안: T Map 클릭한 위치에 마커 표시하기 예시 대신 다른 방식을 택함