조그만 기술로 세상을 이롭게/근처여행어때

근처여행어때 개발 방법 및 사용한 API 정리

eplus 2026. 6. 22. 09:28

최근 공공데이터를 활용해서 여행 관련 정보를 간단하게 조회할 수 있는 앱 근처여행어때를 개발했습니다.

근처여행어때는 현재 위치 또는 사용자가 입력한 지역을 기준으로 주변 여행지, 정원/자연 명소, 축제/행사 정보를 조회하는 생활형 여행 정보 앱입니다.

복잡한 회원가입이나 별도 서버 없이 앱에서 바로 공공데이터 API를 호출하는 구조로 만들었고, 누구나 쉽게 근처 여행 정보를 확인할 수 있도록 구성했습니다.


1. 앱 개발 목적

여행 앱은 많지만, 막상 가까운 곳에 어떤 여행지가 있는지 빠르게 확인하려고 하면 생각보다 번거로운 경우가 많습니다.

그래서 이번 앱은 다음 목적을 기준으로 개발했습니다.

  • 내 현재 위치 주변의 여행지를 바로 조회
  • 지역명을 입력해서 해당 지역 주변 여행지 확인
  • 정원, 자연공원, 수목원, 숲길 등 자연 명소 별도 조회
  • 지역과 월을 선택해서 축제/행사 정보 확인
  • 상세 정보와 지도 앱 연결 지원
  • 오류가 발생해도 앱이 종료되지 않도록 안정성 보완

앱 이름은 기능을 직관적으로 알 수 있도록 근처여행어때로 정했습니다.


2. 개발 환경

이번 앱은 C# .NET MAUI 기반으로 개발했습니다.

.NET MAUI는 하나의 C# 코드로 Android, iOS, Windows 등 여러 플랫폼 앱을 만들 수 있는 개발 프레임워크입니다.

이번에는 우선 Android 앱 출시를 목표로 개발했으며, 화면 구성은 XAML, 기능 처리는 C# Code Behind 방식으로 구현했습니다.

개발 구성은 다음과 같습니다.

  • 개발 언어: C#
  • 개발 프레임워크: .NET MAUI
  • 화면 구성: XAML
  • 대상 플랫폼: Android
  • 데이터 연동: 공공데이터포털 OpenAPI
  • 서버/DB: 사용하지 않음
  • 지도 연결: 외부 지도 앱 실행 방식

초기에는 서버와 DB 없이 단순하고 가볍게 동작하는 구조를 목표로 했습니다.


3. 앱 화면 구성

근처여행어때는 하단 탭 방식으로 구성했습니다.

주요 탭은 다음과 같습니다.

1) 내 주변

현재 GPS 위치 또는 입력한 지역명을 기준으로 주변 여행지를 조회합니다.

예를 들어 창원, 해운대, 경복궁, 여수처럼 지역명이나 장소명을 입력하면, 해당 위치를 찾은 후 그 좌표를 기준으로 10km 이내 여행지를 조회합니다.

또한 현위치 조회 버튼을 누르면 휴대폰 GPS 기준으로 주변 여행지를 바로 조회합니다.

2) 정원/자연

정원, 자연공원, 수목원, 식물원, 숲, 휴양림, 습지 등 자연 중심의 장소를 조회하는 화면입니다.

기본 조회 방식은 내 주변과 동일합니다.

  • 입력 위치 기준 조회
  • 현재 GPS 기준 조회
  • 10km 이내 결과 조회

조회 결과 중에서 자연 관련 키워드를 기준으로 한 번 더 필터링해서 정원/자연 명소 중심으로 보여주도록 구성했습니다.

3) 축제/행사

축제/행사는 지역, 년도, 월을 선택해서 조회할 수 있도록 구성했습니다.

예를 들어 다음과 같은 조건으로 조회할 수 있습니다.

  • 전국 / 2026년 / 10월
  • 부산 / 2026년 / 10월
  • 경남 / 2026년 / 4월

전국을 선택하면 지역 조건 없이 전체 축제/행사를 조회하고, 특정 지역을 선택하면 해당 지역 코드 기준으로 조회합니다.

4) 안내

앱 사용 방법, 데이터 출처, IT만물상 바로가기, Copyright 정보를 표시하는 안내 화면입니다.


4. 사용한 공공데이터 API

근처여행어때에서 사용한 핵심 API는 한국관광공사 TourAPI 국문 관광정보 서비스입니다.

주요 호출 API는 다음과 같습니다.

기능사용 API설명

입력 위치 찾기 searchKeyword2 입력한 지역명/장소명으로 관광 정보를 검색하고 좌표를 확인
내 주변 여행지 조회 locationBasedList2 위도/경도 기준 반경 내 관광정보 조회
정원/자연 조회 locationBasedList2 위치 기반 조회 후 자연 관련 키워드로 필터링
축제/행사 조회 searchFestival2 행사 시작일/종료일, 지역 조건 기준 축제 조회

이번 앱은 별도의 자체 DB를 만들지 않고, 앱에서 API를 호출한 뒤 응답 데이터를 바로 화면에 표시하는 방식으로 구성했습니다.


5. API 호출 구조

앱의 기본 API 호출 흐름은 다음과 같습니다.

사용자 입력 또는 GPS 위치 확인
        ↓
위도/경도 좌표 확보
        ↓
한국관광공사 TourAPI 호출
        ↓
JSON 응답 파싱
        ↓
목록 화면에 표시
        ↓
상세보기 또는 지도 앱 연결

입력 위치 조회의 경우는 한 단계가 더 있습니다.

지역명 입력
        ↓
searchKeyword2 호출
        ↓
검색 결과 중 좌표가 있는 항목 선택
        ↓
locationBasedList2 호출
        ↓
10km 이내 여행지 표시

예를 들어 사용자가 해운대를 입력하면 먼저 searchKeyword2로 해운대 관련 관광정보를 찾고, 그 결과의 좌표를 기준으로 다시 locationBasedList2를 호출해서 주변 여행지를 가져오는 구조입니다.


6. 위치 기반 조회 방식

내 주변 여행지 조회는 locationBasedList2 API를 사용했습니다.

주요 파라미터는 다음과 같습니다.

mapX: 경도
mapY: 위도
radius: 조회 반경
arrange: 정렬 조건
numOfRows: 조회 건수
pageNo: 페이지 번호
MobileOS: OS 구분
MobileApp: 앱 이름
serviceKey: 인증키
_type: json

이번 앱에서는 반경을 10km로 설정했습니다.

radius = 10000

이렇게 하면 현재 위치 또는 입력 위치 기준으로 10km 이내의 관광 정보를 조회할 수 있습니다.


7. 정원/자연 조회 처리

TourAPI에는 관광지 정보가 다양하게 포함되어 있습니다.

정원/자연 탭에서는 위치 기반으로 관광지를 조회한 뒤, 다음과 같은 키워드를 기준으로 자연 관련 장소만 추려서 표시했습니다.

정원
공원
자연
수목원
식물원
생태
숲
휴양림
산림
국립공원
도립공원
군립공원
둘레길
탐방
습지

이 방식은 서버나 별도 DB 없이도 자연 명소 중심으로 결과를 보여줄 수 있다는 장점이 있습니다.

다만 키워드 기반 필터이기 때문에 모든 자연 명소를 완벽하게 분류하는 것은 아닙니다. 향후에는 분류체계 코드나 자체 태그 정보를 활용해서 정확도를 높일 수 있습니다.


8. 축제/행사 조회 방식

축제/행사는 searchFestival2 API를 사용했습니다.

사용자가 지역, 년도, 월을 선택하면 해당 월의 시작일과 마지막 날짜를 계산해서 조회합니다.

예를 들어 2026년 10월을 선택하면 다음처럼 요청합니다.

eventStartDate = 20261001
eventEndDate   = 20261031

부산을 선택한 경우에는 지역 코드도 함께 전달합니다.

lDongRegnCd = 26

전국을 선택한 경우에는 지역 코드를 전달하지 않고 전체 기준으로 조회합니다.


9. 지도 앱 연결

조회 결과에는 지도 버튼을 넣었습니다.

지도 버튼을 누르면 앱 내부에서 별도 지도를 구현하지 않고, 휴대폰에 설치된 외부 지도 앱을 실행합니다.

Android에서는 다음과 같은 geo: URI 형식을 사용했습니다.

geo:위도,경도?q=위도,경도(장소명)

이 방식은 별도 지도 SDK를 붙이지 않아도 되고, 사용자가 평소 사용하는 지도 앱을 바로 활용할 수 있다는 장점이 있습니다.


10. 오류 처리와 안정성 보완

공공데이터 API를 사용하는 앱은 네트워크 상태나 인증키, 제공기관 응답 상태에 따라 오류가 발생할 수 있습니다.

그래서 이번 앱에서는 다음 상황을 중점적으로 처리했습니다.

  • 네트워크 오류
  • 응답 지연
  • API 인증키 오류
  • JSON 파싱 오류
  • 위치 권한 거부
  • GPS 위치 확인 실패
  • 조회 결과 없음
  • 지도 앱 실행 실패

오류가 발생해도 앱이 강제로 종료되지 않고, 사용자에게 팝업 메시지로 안내하도록 처리했습니다.

특히 출시 전 테스트에서는 위치 권한을 거부하거나 네트워크가 불안정한 상황에서도 앱이 종료되지 않는지 확인했습니다.


11. 앱 아이콘과 스플래시 이미지

Google Play 등록을 위해 앱 전용 아이콘과 그래픽 이미지도 별도로 만들었습니다.

앱 아이콘은 여행, 위치, 자연, 축제 이미지를 연상할 수 있도록 구성했습니다.

또한 앱 실행 초기 로딩 화면에서도 기본 MAUI 이미지가 아닌 근처여행어때 전용 이미지를 사용했습니다.

Google Play 등록용 이미지도 다음 기준에 맞춰 준비했습니다.

  • 앱 아이콘: 512 x 512px
  • 그래픽 이미지: 1024 x 500px
  • 휴대전화 스크린샷
  • 7인치 태블릿 스크린샷
  • 10인치 태블릿 스크린샷

12. 개발하면서 느낀 점

공공데이터를 활용하면 생각보다 빠르게 실용적인 앱을 만들 수 있습니다.

특히 여행정보처럼 전국 단위 데이터가 필요한 경우, 자체적으로 데이터를 수집하고 관리하는 것은 쉽지 않습니다.

하지만 한국관광공사 TourAPI를 활용하면 관광지, 축제, 숙박, 음식점, 문화시설 등 다양한 정보를 OpenAPI 형태로 조회할 수 있어 앱 개발 초기 단계에서 매우 유용합니다.

다만 실제 앱으로 출시하려면 단순히 API를 호출하는 것만으로는 부족합니다.

다음 부분이 중요했습니다.

  • API 키 관리
  • 응답 오류 처리
  • 위치 권한 처리
  • 네트워크 장애 대응
  • 조회 결과 없음 처리
  • 사용자 화면 구성
  • Google Play 이미지와 설명 자료 준비

결국 앱 개발은 기능 구현뿐 아니라, 사용자가 오류 상황에서도 불편하지 않게 사용할 수 있도록 다듬는 과정이 중요하다는 것을 다시 느꼈습니다.


13. 마무리

근처여행어때는 공공데이터를 활용해서 만든 간단한 여행 정보 앱입니다.

현재 위치나 입력한 지역을 기준으로 주변 여행지, 정원/자연 명소, 축제/행사를 빠르게 확인할 수 있도록 구성했습니다.

앞으로는 다음 기능도 추가할 수 있을 것 같습니다.

  • 즐겨찾기 기능
  • 여행 코스 자동 구성
  • 날씨 정보 연동
  • AI 기반 여행지 추천
  • 가족/연인/아이와 함께 가기 좋은 장소 추천
  • 방문자수 기반 인기 여행지 추천

공공데이터와 모바일 앱을 잘 조합하면 생활에 도움이 되는 작은 앱을 빠르게 만들 수 있습니다.

조그만 기술로 세상을 이롭게.

반응형