헤더) 상단바에 북커 로고 / 돋보기 아이콘 / 아바타 아이콘 이미지가 필요하다.
팔로잉 / 좋아요 기능이 아직 구현되지 않아서 탭만 만들어 놓음
민규님) 지도 마크 찍는 것까지 성공, 수파베이스에서 가져온 값(경도,위도)으로 마크를 찍는 작업 중. 마크에 해당하는 상세 설명을 어떻게 구현할 지 고민 중
나연님) 대댓글까지 기능 구현 완료, 검색 페이지 맡아서 구현. (내일까지 구현 완료 ?)
병택님) 모달 창에 채팅 리스트 구현 완료. 중고 거래 페이지에서 버튼 클릭 시 값 넘겨주는 로직 구현 중
주원님) 토스트 에디터를 이용한 사진 가져오는 로직 구현 중, 메인 페이지는 오늘 밤이나 내일 작업할 예정
지예님) 도서 소개 페이지에서 도서 정보 불러오는 것까지 구현 완료. 베스트셀러만 완료. 고객센터 실시간 채팅은 css 제외 완료. + 도서 소개 카테고리 : 베스트 셀러/신작도서/스페셜/북커픽(블로그베스트)로 구성
→ 원래 정했던 recoil 사용하는 걸로
→ 다른 팀원들의 코드를 볼 시간을 갖고, 내가 아닌 다른 팀원들의 코드에 관하여 질문을 할 수 있는 수준으로 공부해오는 걸로.(실제로 질문하고 답하는 시간을 가질 예정)
목요일까지 파트 구현하고, 목요일에 다른 팀원 파트 공부, 금요일에 테스트 진행. 코드리뷰는 하고 싶은 팀원끼리 진행
토,일,월 → 발표 준비
월 → 계속 디벨롭 할 수 있는 부분이 있을 것 같은데, 월요일까지 해놓은 기능 중에 디벨롭 하고 싶은 기능이 있다면 그것을 디벨롭하는 방향으로. 새로운 기능 구현하는 것은 비추천(튜터님의 의견). 남은 2주동안 현재까지의 코드를 어떻게 디벨롭 할 지 고민해봐야 함.
import { useEffect, useState } from 'react';
import { mapMarkerDataHandler } from '../../api/supabase.api';
import { mapMarkerDataTypes } from '../../types/types';
const KakaoMap = () => {
const [makerData, setMakerData] = useState<mapMarkerDataTypes[] | undefined>();
// const mapMarkerData = async () => {
// try {
// const result = await mapMarkerDataHandler();
// console.log('result', result);
// setData(result as mapMarkerDataTypes | undefined);
// } catch (err) {
// console.log(err);
// }
// };
useEffect(() => {
//'map'이라는 id가진 엘리먼트 찾아 container 변수에 할당
const container = document.getElementById('map');
//container이 null이 아닌 경우에만 코드를 실행
if (container) {
//카카오 맵 생성하는 코드
const options = {
//첫 화면 중심 좌표 띄워줌
center: new kakao.maps.LatLng(37.5665, 126.978),
level: 6,
};
//맵과 중심화면을 정해서 띄워줌
const map = new kakao.maps.Map(container, options);
//가져온 데이터 상태 변수에 저장
const fetchMapMarkerData = async () => {
try {
const result = await mapMarkerDataHandler();
console.log('result', result);
setMakerData(result as any[]);
} catch (err) {
console.log(err);
}
};
//함수 호출하여 데이터 가져오기
fetchMapMarkerData();
//가져온 데이터 반복하면서 지도에 마커를 추가
makerData?.forEach((data) => {
// 마커가 표시될 위치입니다
const markerPosition = new kakao.maps.LatLng(data.latitude, data.longitude);
// 마커를 생성합니다
const marker = new kakao.maps.Marker({
position: markerPosition,
});
// 마커가 지도 위에 표시되도록 설정합니다
marker.setMap(map);
});
// 아래 코드는 지도 위의 마커를 제거하는 코드입니다
// marker.setMap(null);
}
}, []);
return (
<>
{/* 맵이 그려질 엘리먼트를 반환 */}
<div id="map" style={{ width: '500px', height: '400px' }}></div>
</>
);
};
export default KakaoMap;
해당 코드를 통해서 맵을 구현했고, 맵에 마킹을 찍을 수 있게 되었고, 마킹을 여러개 찍기 위해 수파베이스에서 데이터를 뽑아왔는데,
// mapMarkerData 가져오는 함수
export const mapMarkerDataHandler = async () => {
const { data, error } = await supabase.from('independentBookStores').select('*');
console.log(data);
console.log(error);
return data;
};
return을 넣지 않으니 데이터가 빠져나오질 않아서 몇시간동안 고생을 했었고,,
이 데이터를 useState의 안에 담았었는데, 그 type들을 일일히 설정해주냐고 또 고통받았었다
export type mapMarkerDataTypes = {
id: number;
gov_id: string;
name: string;
category1: string;
category2: string;
address: string;
latitude: number;
longitude: number;
weekdays_open_at: number;
weekdays_close_at: number;
saturday_open_at: number;
saturday_close_at: number;
sunday_open_at: number;
sunday_close_at: number;
closedDay_open_at: number;
closedDay_close_at: number;
closedDay_guide: string;
tel_num: number;
optn_dc: string;
adit_dc: string;
postal_code: number;
};
그래도 결과적으로 마킹은 다 찍히게 되었고.. 마킹을 눌렀을때 상세설명을 넣는 방법을 이제 고민해야 할 것 같다.. 쉽지가 않다 쉽지가...