SwiftのMapKitで2地点間のルートを表示する方法を解説
はじめに
SwiftのMapKitを使って地図上の2つの場所の間にルートを表示するには、まず出発地と目的地の両方の座標(緯度・経度)を取得する必要があります。
2地点間のルートを表示する関数
両方の場所の座標が用意できたら、以下の関数を使って2点間の経路を表示できます。この例では、2つのランダムな地点を出発地と目的地として使用します。
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を作成し、MKMapItem.openMaps(with:)メソッドを呼び出すことで、標準の「マップ」アプリを起動します。MKLaunchOptionsDirectionsModeDrivingを指定しているため、車でのドライブルート案内が表示されます。
viewDidLoadでの呼び出し
このチュートリアルでは結果を確認しやすくするため、viewDidLoad内でこの関数を呼び出します。実際のアプリでは、ボタンのタップなど、必要なタイミングで呼び出すようにしてください。
その前に、ルートの両端となる2つの場所(座標)を作成します。
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)
}実行結果
上記のコードをデバイスで実行すると、マップアプリが起動し、2つの地点を結ぶドライブルートが表示されます。

補足:アプリ内で直接ルートを描画したい場合
なお、上記の方法は標準のマップアプリを起動して経路を表示するアプローチです。自アプリのMKMapView上に直接ルートを描画したい場合は、MKDirectionsRequestとMKDirectionsを使って経路データを取得し、MKPolylineとMKPolylineRendererで地図上に線を描く方法が一般的です。用途に応じて使い分けるとよいでしょう。
-
JavaとOpenCVで長方形を描画する方法|Imgproc.rectangle()の使い方を徹底解説
Java用OpenCVライブラリの org.opencv.imgproc パッケージには、Imgproc クラスが含まれています。画像に長方形を描画するには、このクラスが提供する rectangle() メソッドを使用します。 このメソッドは以下のパラメータを受け取ります。 Matオブジェクト:長方形を描画する対象となる画像を表します。 Pointオブジェクト(2つ):描画する長方形の対角となる2つの頂点座標を表します。 Scalarオブジェクト:長方形の色をBGR形式で指定します。 整数値:長方形の枠線の太さを指定します(デフォルト値は1)。 サンプルコード 以下は、白紙の画像に長方形を
-
JavaとOpenCVで線を描画する方法をわかりやすく解説
Java版OpenCVライブラリのorg.opencv.imgprocパッケージには、Imgprocというクラスが含まれています。画像に直線を描画するには、このクラスが提供するline()メソッドを呼び出します。 line()メソッドのパラメータ line()メソッドは、以下のパラメータを受け取ります。 Matオブジェクト ― 直線を描画する対象となる画像を表します。 Pointオブジェクト2つ ― 直線の始点と終点の座標を表します。 Scalarオブジェクト ― 直線の色をBGR形式で指定します。 整数値 ― 直線の太さを指定します(デフォルト値:1)。 サンプルコード 以下は、白紙の画