[iPhone] 現在地をMapKitで地図表示する

例えばお店の位置を知らせる地図は緯度経度からすぐにできますが、自分が今どこにいるのか知りたいという場合には、ユーザー許可を取得したりして少し手間がかかります。
 

Swift 4.0
Xcode 9.2

 

requestWhenInUseAuthorization

 
ある決まった場所を地図で紹介するときは緯度経度が確定しているので簡単にできました。
 

iOSには地図を表示するために MapView が用意されています。Swift で簡単に地図が作れるのでやってみましょう。  
 
では、ユーザーが今いるところが知りたいケースではどうするのでしょうか。
 
ユーザー許可のリクエスト
位置情報は(少なくとも日本では)個人情報保護の観点から、ユーザー許可を取る必要がでてきます。
NSLocationWhenInUseUsageDescription をKeyとして、説明をInfo.plistに書き込みます。これは位置情報を取得するときのユーザーへの説明です。こっそり裏で位置情報を取ることはできません(審査で落ちるでしょう)
 
Info.plist

 
これを呼び出すためのコードは

 
notDeterminedのステータスが返ってきたら
requestWhenInUseAuthorization()
を投げて許可を求めるダイアログを表示させます。

カレンダーアプリなのに位置情報を取得しようとするとユーザーが疑問を持ちますので、アプリのこういった機能のためであるなど、理由を説明することができます。
 

 
userLocation.coordinate
固定の緯度経度を設定したCLLocationCoordinate2Dの代わりに、現在位置はこれを使って取得できます。
また、ユーザーが移動して位置が変わった時も追従するように設定。
startUpdatingLocation()

常に追従させていく方法として、トラッキングモードも設定できます。
MKUserTrackingMode.follow
MKUserTrackingMode.followWithHeading
 
NativeのMapsアプリではSafeAreaを考慮して実装してありました(あたりまえ!)
それを参考に、Portraitではtopとbottomには地図を表示させないようにしました。
 
ちなみに、Mapsではtopは薄く透明にしてbottomはSearchバーを置いています。

 

サンプルコード

 

ViewController.swift

 

 
 

References:
MKMapView – MapKit | Apple Developer Documentation
MKUserTrackingMode – MapKit | Apple Developer Documentation

スマホの下取り

まだ1年も使っていないスマホを新機種に変えたくて下取りしようとお店に持ち込んだことがありますが
結局なんだかんだと思ったほどの金額になりませんでした(涙

このネットオフは専業のため高額買取が可能で、お店に行く時間が無い人にとっては送料無料の宅配便が自宅まで引取りに来てくれるのは助かります。

定額買取キャンペーン中であればキズがあっても付属品が無くても減額無しなのでお得です。」


 

 

誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:




Apple Watch Series 4
44mm
(GPS)/(GPS+Cellular)
スペースグレイアルミニウムケース
ブラックスポーツバンド




ページのトップへ戻る

シェアする

  • このエントリーをはてなブックマークに追加

フォローする