개요
지도 앱을 개발하다 보면 두 지점 사이의 경로를 표시해야 하는 경우가 자주 발생합니다. Swift에서 MapKit을 활용하면 이러한 기능을 비교적 간단하게 구현할 수 있습니다. 이 글에서는 두 위치의 좌표를 기반으로 지도에 경로를 그리는 방법을 단계별로 살펴보겠습니다.
사전 준비: 위치 좌표 확보하기
두 위치 사이에 경로를 그리려면 먼저 해당 위치들의 좌표(Coordinate)가 필요합니다. 위도(latitude)와 경도(longitude) 값으로 구성된 CLLocationCoordinate2D 객체를 사용하면 지도상의 특정 지점을 나타낼 수 있습니다.
좌표를 확보했다면 아래 함수를 사용하여 지도에 두 지점을 연결하는 경로를 표시할 수 있습니다. 이 예제에서는 임의의 두 위치를 출발점과 도착점으로 사용하겠습니다.
경로 표시 함수 구현
func getDirections(loc1: CLLocationCoordinate2D, loc2: CLLocationCoordinate2D) {
let source = MKMapItem(placemark: MKPlacemark(coordinate: loc1))
source.name = "Your Location"
let destination = MKMapItem(placemark: MKPlacemark(coordinate: loc2))
destination.name = "Destination"
MKMapItem.openMaps(with: [source, destination], launchOptions: [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving])
}위 코드의 동작 방식을 살펴보면 다음과 같습니다.
- MKMapItem 생성: 출발지와 도착지 좌표를 각각
MKPlacemark로 감싸고, 이를 다시MKMapItem객체로 만듭니다. - 이름 지정: 각 지점에 이름을 부여하면 지도 앱에서 해당 위치를 쉽게 식별할 수 있습니다.
- 지도 앱 실행:
MKMapItem.openMaps(with:launchOptions:)메서드를 호출하면 iOS 기본 지도 앱이 열리며,MKLaunchOptionsDirectionsModeDriving옵션 덕분에 자동차 경로 안내 모드로 실행됩니다.
참고로 이 메서드는 앱 내부에 직접 경로를 그리는 것이 아니라, iOS의 기본 지도 앱(Maps)을 실행하여 경로를 안내받는 방식입니다. 앱 화면 안에서 직접 경로선을 그리고 싶다면 MKDirections와 MKPolylineRenderer를 함께 사용하는 방법도 고려할 수 있습니다.
ViewDidLoad에서 함수 호출하기
이번 튜토리얼에서는 결과를 바로 확인할 수 있도록 viewDidLoad에서 이 함수를 호출하겠습니다. 실제 프로젝트에서는 필요에 따라 버튼 클릭 등 다른 시점에 호출하면 됩니다.
함수를 호출하기 전에 먼저 두 개의 위치 좌표를 생성해야 합니다.
override func viewDidLoad() {
super.viewDidLoad()
let coordinateOne = CLLocationCoordinate2D(latitude: CLLocationDegrees(exactly: 40.586746)!, longitude: CLLocationDegrees(exactly: -108.610891)!)
let coordinateTwo = CLLocationCoordinate2D(latitude: CLLocationDegrees(exactly: 42.564874)!, longitude: CLLocationDegrees(exactly: -102.125547)!)
self.getDirections(loc1: coordinateOne, loc2: coordinateTwo)
}여기서는 미국 콜로라도주와 네브래스카주 인근의 두 지점을 출발지와 도착지로 설정했습니다. 실제 개발 시에는 사용자의 현재 위치(CLLocationManager 활용)나 검색된 장소의 좌표를 동적으로 가져와 사용하는 것이 일반적입니다.
실행 결과 확인
위 코드를 실제 디바이스에서 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다. 지도 앱이 자동으로 실행되며 설정한 두 지점 사이의 자동차 경로가 표시됩니다.

마무리
이처럼 MapKit의 MKMapItem.openMaps 메서드를 활용하면 몇 줄의 코드만으로 두 위치 사이의 경로 안내 기능을 손쉽게 구현할 수 있습니다. 더 나아가 앱 내부에 직접 경로를 렌더링하고 싶다면 MKDirectionsRequest로 실제 도로 정보를 받아와 MKOverlay 형태로 지도 위에 그리는 방식을 학습해 보시기 바랍니다.