LoginSignup
1
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-03-02

記事一覧

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

補足

(04)- トラッキングモードを切り替える(自作ボタン)では自作のボタンと切り替え処理を実装しましたが、今回はMKUserTrackingButtonで自動にトラッキングモードを切り替える方法を記事にします。

MKUserTrackingButtonでボタンを表示する

MKUserTrackingButtonでトラッキングボタンを表示する。

ViewController.swift:MKUserTrackingButtonでトラッキングボタンを表示する
// トラッキングボタン表示
let trakingBtn = MKUserTrackingButton(mapView: mapView)
trakingBtn.layer.backgroundColor = UIColor(white: 1, alpha: 0.7).cgColor
self.view.addSubview(trakingBtn)

シミュレータを起動すると以下の様に表示されるが、ボタンを押してもトラッキングモードは切り替わらない。

image3.png

ボタンは押せないが、スクロールするとトラッキングボタンの表示がスクロールモードに切り替わる。

image4.png

トラッキングモードの状態を検出してボタン表示が自動で切り替わる事が分かる。
ボタンが押せないのは配置した位置(default)が問題の様だ。

ボタンの位置を変更する

trakingBtn.frameで表示位置とサイズを指定する。

ViewController.swift:trakingBtn.frameで表示位置とサイズを指定する
let trakingBtn = MKUserTrackingButton(mapView: mapView)
trakingBtn.layer.backgroundColor = UIColor(white: 1, alpha: 0.7).cgColor
trakingBtn.frame = CGRect(x:40, y:730, width:40, height:40)
self.view.addSubview(trakingBtn)

実行した結果は以下の様になる。

<ヘディングアップ>
image6.png

<スクロールモード>
image7.png
 alpha: 0.7で透過されている。
 1.0(透過しない)〜0.1(最も透過)となる。

<ノースアップ>
image5.png

固有デバイスの画面サイズに依存しない様にボタンを配置する

デバイスの画面サイズを取得して、width/height終端からの差分を指定してオブジェクトを配置する。
今回は左下に配置したいので、height終端からの差分を指定する。

ViewController.swift:デバイスの画面サイズを取得する
// デバイスの画面サイズを取得する
let dispSize: CGSize = UIScreen.main.bounds.size
let height = Int(dispSize.height)
ViewController.swift:ボタンを配置する
trakingBtn.frame = CGRect(x:40, y:height - 82, width:40, height:40)

iPhoneXだとheightは812なので、上記の画像と同じ位置に表示される。

記事一覧

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

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3