[swift] Mapbox를 이용한 실시간 경로 탐색 기능 개발 방법

Mapbox는 실시간으로 지도를 표시하고 경로를 탐색하는 기능을 제공하는 강력한 지도 API입니다. 이번 블로그에서는 Swift를 사용하여 Mapbox를 이용하여 실시간 경로 탐색 기능을 개발하는 방법을 알아보겠습니다.

목차

Mapbox 설치

Mapbox를 사용하기 위해 우선 Cocoapods를 이용하여 Mapbox SDK를 설치해야 합니다.

// Podfile

platform :ios, '11.0'
use_frameworks!

target 'YourApp' do
  pod 'Mapbox-iOS-SDK'
end

위와 같이 Podfile에 Mapbox SDK를 추가하고 터미널에서 pod install 명령어를 실행하여 SDK를 설치합니다.

Mapbox SDK 설정

Mapbox SDK를 사용하기 위해 AppDelegate.swift 파일에서 application(_:didFinishLaunchingWithOptions:) 메서드에 다음 코드를 추가합니다.

import Mapbox

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Mapbox 사용을 위한 토큰 설정
    let token = "YOUR_MAPBOX_TOKEN"
    MGLAccountManager.accessToken = token
    
    return true
}

위 코드에서 YOUR_MAPBOX_TOKEN을 본인의 Mapbox 액세스 토큰으로 대체해야 합니다. 토큰은 Mapbox 계정으로부터 생성할 수 있습니다.

지도 표시하기

지도를 표시하기 위해 UIViewController에 MapView를 추가하고 코드로 설정합니다.

import Mapbox

class ViewController: UIViewController, MGLMapViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let mapView = MGLMapView(frame: view.bounds)
        mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        mapView.delegate = self
        
        view.addSubview(mapView)
    }
    
    func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) {
        // 지도 스타일이 로드되었을 때 실행되는 로직을 추가할 수 있습니다.
    }
}

위 코드에서 MGLMapViewDelegate 프로토콜을 채택하여 지도 로드 이벤트를 처리할 수 있습니다.

실시간 경로 탐색

Mapbox는 실시간으로 경로를 탐색하는 기능도 제공합니다. 아래는 출발지와 도착지를 설정하여 경로를 탐색하고 표시하는 예제 코드입니다.

import MapboxDirections

let origin = Waypoint(coordinate: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), name: "출발지")
let destination = Waypoint(coordinate: CLLocationCoordinate2D(latitude: 37.3352, longitude: -122.0322), name: "도착지")

let options = NavigationRouteOptions(waypoints: [origin, destination])

Directions.shared.calculate(options) { (waypoints, routes, error) in
    guard let route = routes?.first else {
        return
    }
    
    // 경로를 지도에 표시하는 로직을 추가할 수 있습니다.
    let navigation = NavigationViewController(for: route)
    
    self.present(navigation, animated: true, completion: nil)
}

위 코드에서 출발지와 도착지 좌표를 설정하고 NavigationRouteOptions 객체를 생성하여 경로 탐색 옵션을 설정합니다. 그 후 Directions.shared.calculate(_:completionHandler:) 메서드를 호출하여 경로를 탐색합니다. 탐색이 완료되면 경로를 지도에 표시하는 로직을 추가할 수 있습니다.

이로써 Mapbox를 이용하여 실시간 경로 탐색 기능을 개발하는 방법을 알아보았습니다. Mapbox의 다양한 기능을 활용하여 더욱 다양하고 풍부한 경로 탐색 앱을 개발할 수 있습니다.

참고 자료