Edited at

Swift MkMapViewで地図アプリ作成してみた(9)- スケールバーとコンパスを追加する


記事一覧

Swift MkMapViewで地図アプリ作成してみた(記事一覧)


スケールバーを表示する

スケールを変更すると自動でスケールバーを表示する。


ViewController.swift:スケールバーを表示する

// スケールバーの表示

let scale = MKScaleView(mapView: mapView)
scale.frame.origin.x = 15
scale.frame.origin.y = 45
scale.legendAlignment = .leading
self.view.addSubview(scale)

legendAlignmentに設定できる値は以下の通り。

1
2

.leading
0を左起点にする

.trailing
0を右起点にする

scale.png


コンパスを表示する


ViewController.swift:コンパスを表示する

// コンパスの表示

let compass = MKCompassButton(mapView: mapView)
compass.compassVisibility = .adaptive
compass.frame = CGRect(x: width - 50, y: 150, width: 40, height: 40)
self.view.addSubview(compass)
// デフォルトのコンパスを非表示にする
mapView.showsCompass = false

compassVisibilityに設定できる値は以下の通り。

1
2

.hidden
常に非表示

.visible
常に表示 

.adaptive
地図の方位を動かしたとき(ノースアップでない時)だけ表示。


デバイスで実行した結果

device.png


補足

前回の記事で設定したトラッキングモードを変更するボタンの位置を変えている。

Swift MkMapViewで地図アプリ作成してみた(7)- トラッキングモードを切り替える(自作ボタン)

Swift MkMapViewで地図アプリ作成してみた(8)- トラッキングモードを切り替える(MKUserTrackingButton)


ViewController.swift:トラッキングボタンの位置を変更

trakingBtn.frame = CGRect(x:width - 50, y:100, width:40, height:40)



参考文書

iOS 11で大幅に強化されたMapKit