|
|||||
|
対象: 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]
|
|||||