가격순
Location resolution surface
Kakao Map 모바일 검색:
https://m.map.kakao.com/actions/searchView?q=
Kakao Map 장소 패널 JSON:
https://place-api.map.kakao.com/places/panel3/
위치 문자열은 Kakao Map으로
anchor 좌표(WGS84)
를 구한 뒤, 내부적으로
WGS84 → KATEC
변환을 적용해 Opinet
aroundAll.do
에 넘긴다.
Workflow
유저에게 반드시 현재 위치를 묻는다.
위치 문자열을 받으면 Kakao Map anchor 검색으로 좌표를 찾는다.
위도/경도를 직접 받으면 anchor 검색을 생략한다.
좌표를 KATEC으로 변환한다.
Opinet
aroundAll.do
를
sort=1
가격순으로 조회한다.
상위 후보에 대해
detailById.do
를 호출해 도로명주소, 전화번호, 셀프 여부, 세차장, 경정비, 품질인증 여부를 보강한다.
보통 3~5개만 짧게 정리한다.
Responding
결과는 보통 아래 필드를 포함해 짧게 정리한다.
주유소명
가격(휘발유/경유 중 요청한 제품)
거리
주소
셀프 여부
세차장/경정비/품질인증 여부(있으면)
Node.js example
const
{
searchCheapGasStationsByLocationQuery
}
=
require
(
"cheap-gas-nearby"
)
;
async
function
main
(
)
{
const
result
=
await
searchCheapGasStationsByLocationQuery
(
"서울역"
,
{
productCode
:
"B027"
,
radius
:
1000
,
limit
:
3
}
)
;
console
.
log
(
result
.
anchor
)
;
console
.
log
(
result
.
items
)
;
}
main
(
)
.
catch
(
(
error
)
=>
{
console
.
error
(
error
)
;
process
.
exitCode
=
1
;
}
)
;
Done when
유저의 현재 위치를 먼저 확인했다.
기본 proxy 경유로 Opinet 데이터를 조회했다.
공식 Opinet nearby 결과를 최소 1개 이상 찾았거나, 못 찾은 이유와 다음 질문을 제시했다.
가격순 상위 결과를 3~5개 이내로 정리했다.
Failure modes
프록시 서버가 내려가 있거나
OPINET_API_KEY
가 서버에 설정되지 않은 경우.
Kakao Map anchor가 애매하면 좌표가 잘못 잡힐 수 있어 추가 위치 확인이 필요하다.
Opinet Open API 응답이 일시적으로 비거나 갱신 중일 수 있다.