対象: Map Viewで地図を表示する(Swift)地図を利用するアプリを考えているなら、Map Viewが最初の選択肢となるだろう。MapViewを使うだけならInterface Builderでそれを貼り付けるだけで良い。しかし、ただ貼り付けただけだとMap Viewのサイズは固定なので見栄えが悪い。Map Viewを画面いっぱいに表示するためには一工夫必要になる。 各端末でMap Viewが画面いっぱいに表示されるようにするには、Size InspectorのAutoresizingを設定するだけで良い。もちろん、画面の回転にも対応してくれる。 iOSのバージョンによっては、以下のようなエラーがコンソールに表示されてMap Viewが表示されないことがあるかも知れない。 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named MKMapView' その場合は、ターゲットのCapabilitiesペインでMapsをONにするか、もしくはViewController.swiftの冒頭でimport MapKitするときっと解決するだろう。 更に、このMap View上に現在地を表示したいなら、Attributes InspectorでUser Locationプロパティにチェックを入れる。 尚、iOS 8以降は位置情報の利用にはユーザから許可を得る必要がある。これをやらないと以下のようなメッセージをコンソールで見ることになるだろう。 Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first. このため、CLLocationManagerのインスタンスを取得してrequestAlwaysAuthorizationを呼び出す等しなければならない。iOSのバージョンによって必要なことは異なるため、詳しくはこちらを参照していただきたい。 iOS 11でUser Locationをtrueにして自分の位置を表示するために必要なコードとInfo.plistの追加項目は以下である。 import UIKit // CapabilitiesでMapsをONにするかMapKitをimportするかする //import MapKit import CoreLocation class ViewController: UIViewController { var locationManager: CLLocationManager! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. locationManager = CLLocationManager() // NSLocationAlwaysAndWhenInUseUsageDescriptionに設定したメッセージでユーザに確認 locationManager.requestAlwaysAuthorization() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
作成したアプリを実行すると、以下のようになる。白枠の青丸がGPSで得られた現在地だ。 (2017/12/25)
Copyright© 2004-2019 モバイル開発系(K) All rights reserved.
[Home]
|