검색 후 해당 지역을 더블클릭하면 팝업이 꺼지면서 해당 주소 이름을 넣고 좌표를 얻어오는 로직을 fetch, axios로 돌려서 값을 저장한다.
우선 내가 사용한 사이트는 주소기반산업지원서비스이다. 우리가 흔히 아는 다음 카카오의 주소찾기 서비스도 있지만 무엇보다 api를 우선적으로 찾다보니 매우 간편하게 사용할 수 있는 api라 다음 카카오의 주소찾기 대신 해당 사이트를 이용하게 되었다.
또 추가적인 로그인이 필요없고 질의를 남기면 전화로 바로바로 응대해주기 때문에 조금 부담스럽지만 좋긴하다.
나는 일단 인터넷망과 개발키로 받았고 나중에 프로덕션으로 넣을 땐 따로 운영키로 발급받아서 넣어주는 것이 좋다.
추가적으로 팝업 API, 검색 API 가 있는데 팝업 API는 다음 카카오와 같은 주소 API 처럼 팝업으로 찾는 것이고 검색 API는 팝업 API 에서 검색하는 기능 API만 제공하는 API이다.
나는 UI의 일관성을 헤치는 것을 매우 싫어해서 검색 API를 사용하여 UI의 일관성을 더했다.
const getJuso = async(curPageIndex:number, inputData:string, pageSize:number=countPerPage.value)=> {
try{
const {data} = await axios.get(`https://business.juso.go.kr/addrlink/addrLinkApi.do?confmKey=${key}¤tPage=${curPageIndex}&countPerPage=${pageSize}&keyword=${inputData}&resultType=json`);
totalPage.value = Math.ceil(data.results.common.totalCount / countPerPage.value);
jusoResultList.value = data.results.juso
} catch (e) {
if(e instanceof AxiosError){
const errorObj = new Error(exceptionHandler(e.response!.status).text);
throw errorObj
}
}
}
장점 : 위 주소를 가져오는것 처럼 API로 쉽고 빠르게 가져올 수 있음, 별도의 key 없이 사용가능
단점 : 리버스 지오 코딩은 그럭저럭 괜찮지만 지오코딩은 정확도가 한국은 현저히 떨어짐
장점 : 토큰 갱신 필요 X, 프로젝트 생성 필요하긴 한데 매우 간단함 5초 컷, 완전 무료, 한국꺼 지원 개쩜, dev talk이라고 질문 커뮤니티도 엄청 잘 되어있음.
단점 : 없음.
그냥 갓카오꺼 쓰면 됨. docs도 매우 친절함 한국어로 적혀있는거 기준 제일 친절한 듯.
const getGeoCoding = async(addrsData:string): Promise<{lon: string, lat: string}> => {
try{
const getGeoCodingReq = axios.create({
baseURL : 'https://dapi.kakao.com/v2/local/search/address.json',
headers:{
'Authorization':'KakaoAK {본인 REST API KEY}',
}
});
const payload = {
analyze_type:'similar', // or exact
query:addrsData,
page:'1', // page, size로 페이징 처리
size:'10'
}
const {data} = await getGeoCodingReq.get('', {params:payload});
return {lon:data.documents[0].x ?? '0', lat:data.documents[0].y ?? '0'}
} catch (e) {
if(e instanceof AxiosError){
const errorObj = new Error(exceptionHandler(e.response!.status).text);
throw errorObj
}
}
}