본문으로 건너뛰기

Baidu Map 기반 Android 대중교통 도우미 앱 개발

무료2015-03-16#Android#Toy#百度地图开发#公交查询#乘车方案

Baidu Map API를 이용해 대중교통 도우미(승차 경로 검색, 버스 노선 상세 조회)를 개발하는 방법입니다. 공식 앱은 데이터도 많이 쓰고 메모리도 차지하며 광고까지 있죠... 그렇다면 직접 만들어 보는 건 어떨까요?

들어가며:

놀러 갈 때 버스나 지하철을 타는 건 피할 수 없는 일인데, 가는 길을 모른다면 난감하겠죠. 공식 앱을 쓰자니 단점이 너무 많고, 휴대폰 브라우저로 검색하자니 느리고 번거롭습니다... 이런 문제들을 해결하기 위해 가벼운 여행 도우미 앱을 직접 만들어 보겠습니다. 이제 길 잃을 걱정은 끝! _\^o^/_

1. 기능 요구사항 분석

기본 기능:

  1. 출발지와 목적지를 입력하여 다양한 승차 경로를 조회하고 표시할 수 있어야 함
  2. 버스 노선 번호로 경유 정류장을 조회할 수 있어야 함 (정류장을 지나치는 것을 방지...)

확장 기능:

  1. GPS 위치 추적으로 출발지(현재 위치에서 가장 가까운 정류장 이름) 자동 가져오기 [배터리와 데이터 소모 문제로 나중에 포기함...]
  2. 지도 표시 [이 역시 나중에 포기함. 걷는 것을 좋아하는 분은 예외겠지만, 사용자에게 지도가 크게 유용하지 않아 보임. 적어도 저에게는 별 쓸모가 없었음]

2. 실현 가능성 분석

1. Baidu Map Open Platform에서 제공하는 API로 승차 경로 조회가 가능함

2, 3, 4. 위와 동일. 결론: 필요한 모든 기능을 완벽하게 구현할 수 있음

3. 개발 전제 조건

  1. Baidu Map 개발자 계정 필요
  2. Key 필요 (현재 최신 버전의 지도 Key는 앱과 고유하게 바인딩됨)
  3. 공식 제공되는 jar 파일 필요

"바이두 지도 개발(百度地图开发)"로 검색하면 위 세 가지는 순식간에 해결됩니다. (이 점은 진입 장벽이 매우 낮아 칭찬할 만합니다. 텐센트나 시나 웨이보 등의 개발자 계정은 인증이 꽤 까다롭고, 신분증 사본을 요구하는 곳도 있죠...)

4. API 문서 및 데모 살펴보기

솔직히 API 문서는 별로 친절하지 않습니다. 함수 설명이 한 줄뿐인 경우가 많으니 주석이 꼼꼼하게 달려있어 이해하기 쉬운 데모를 직접 보는 것을 추천합니다.

5. 코딩 시작 (아래 소스 코드는 모두 테스트를 거쳤으며, 상세한 주석이 포함되어 있습니다)

소스 코드는 [소스 코드 다운로드] 참조

P.S. 소스 코드는 위에 제공되어 있으며, 질문이 있으시면 아래에 댓글을 남겨주세요.

6. 지도 표시

[가장 먼저 구현했던 기능입니다. (지도를 처음 다뤄봐서 지도가 어떻게 생겼는지 보고 싶어 좀 흥분했었죠...) 처음 요구사항에는 없었고 나중에는 제외되었지만, 아래 소스 코드는 여전히 잘 작동합니다]

소스 코드는 [소스 코드 다운로드] 참조

7. 오프라인 지도

오프라인 지도는 장점이 많지만, 많은 사용자에게 앱을 배포할 계획이라면 오프라인 지도 패키지 다운로드 기능을 추가하거나 (데모에 예제 코드가 있어 쉽습니다), 앱 최초 실행 시 APK 리소스 파일에 포함된 오프라인 지도를 사용자의 SD 카드로 복사하는 방법(이론적으로 가능)을 고려해 보세요. 물론 이 경우 지도의 적용 범위가 제한되므로, 특정 지역 대상 앱(예: 시안 여행 도우미)에 적합합니다.

오프라인 지도의 사용법은 다음과 같습니다:

  1. 공식 사이트에서 다운로드한 폴더 전체를 휴대폰 SDCARD의 지정된 경로에 복사합니다. (구체적인 경로는 압축 파일 안의 ReadMe.txt 참조)
  2. 프로그램 내에서 오프라인 지도 패키지에 대한 scan 초기화 작업이 필요합니다. (이는 지도 패키지를 파싱하여 하나의 큰 파일을 여러 개의 작은 파일로 나누는 과정으로, 파싱하지 않으면 지도 패키지를 사용할 수 없습니다.)
  3. 지도 표시 메서드가 이를 자동 감지하는 것 같습니다. (오프라인 지도가 있으면 우선적으로 사용함)

8. 실행 화면 스크린샷

댓글

아직 댓글이 없습니다

댓글 작성