続いて、「viewDidLoad」メソッドにMapViewの設定に関するコードを追加します。「viewDidLoad」メソッド内の「// Do any additional ...」というコメント行の次に、以下の2行を追加します。
self.mapView.rotateEnabled = false self.mapView.pitchEnabled = false
これらは、MapViewの回転や3D表示を無効にするコードになります。MKMapViewクラスのrotateEnabledプロパティとpitchEnabledプロパティの型はBool型です。SwiftのBool型の変数(定数)が取り得る値は「true」または「false」だけです。ここではfalseを代入しています。
続いて、以下の4行を追加します。これらは、MapViewに表示するRegion(中心座標および表示領域を示すもの)を指定するコードです。
let centerCoordinate = CLLocationCoordinate2D(latitude: 35.681382, longitude: 139.766084) let initialSpan = MKCoordinateSpan(latitudeDelta: 0.4, longitudeDelta: 0.4) let initialRegion = MKCoordinateRegion(center: centerCoordinate, span: initialSpan) self.mapView.setRegion(initialRegion, animated: true)
座標を表すCLLocationCoordinate2D構造体、表示領域を表すMKCoordinateSpan構造体を作成し、その2つからRegionを表すMKCoordinateRegion構造体を作成しています(ここでは東京駅の座標を指定しています)。
これらの構造体は定数として作成しています。定数は一度値を代入すると、再代入することはできません。Swiftでは「不変な値」と「変更可能な値」を明確に区別します。
コード追加後の「viewDidLoad」メソッドは以下のようになります。
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.mapView.rotateEnabled = false self.mapView.pitchEnabled = false let centerCoordinate = CLLocationCoordinate2D(latitude: 35.681382, longitude: 139.766084) let initialSpan = MKCoordinateSpan(latitudeDelta: 0.4, longitudeDelta: 0.4) let initialRegion = MKCoordinateRegion(center: centerCoordinate, span: initialSpan) self.mapView.setRegion(initialRegion, animated: true) }
ここで、ツールバーの[Run]ボタンをクリックしてアプリを実行してみましょう。iOSシミュレーター(iPhone 5s)の実行結果を図5に示します。MapViewが表示され、中心座標は東京駅(千代田区)になっています。
続いて、試しにマップ上にピンを追加してみます。「viewDidLoad」メソッドに以下のコードを追加します。
let pointAnnotation = MKPointAnnotation() pointAnnotation.coordinate = centerCoordinate pointAnnotation.title = "東京駅" pointAnnotation.subtitle = "東京都千代田区丸の内" self.mapView.addAnnotation(pointAnnotation)
MKPointAnnotation型の定数を作成し、MapViewに追加しています。MKPointAnnotationはビューではなく、座標やタイトルなどを格納したオブジェクトです。場所に関する情報を格納したオブジェクトをMapViewに追加することで、標準的なピン型の注釈ビュー(MKPinAnnotationView)がMapView上に描画されます。
コード追加後の「viewDidLoad」メソッドは以下のようになります。
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.mapView.rotateEnabled = false self.mapView.pitchEnabled = false let centerCoordinate = CLLocationCoordinate2D(latitude: 35.681382, longitude: 139.766084) let initialSpan = MKCoordinateSpan(latitudeDelta: 0.4, longitudeDelta: 0.4) let initialRegion = MKCoordinateRegion(center: centerCoordinate, span: initialSpan) self.mapView.setRegion(initialRegion, animated: true) // add Annotation let pointAnnotation = MKPointAnnotation() pointAnnotation.coordinate = centerCoordinate pointAnnotation.title = "東京駅" pointAnnotation.subtitle = "東京都千代田区丸の内" self.mapView.addAnnotation(pointAnnotation) }
再びアプリを実行してみます。iOSシミュレーター(iPhone 5s)の実行結果を図5に示します。東京駅の位置にピンが追加されました。
ピンの追加が確認できたので、「MKPointAnnotationを追加するコード」は削除しておきましょう。
コード削除後の「viewDidLoad」メソッドは以下のようになります。
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.mapView.rotateEnabled = false self.mapView.pitchEnabled = false let centerCoordinate = CLLocationCoordinate2D(latitude: 35.681382, longitude: 139.766084) let initialSpan = MKCoordinateSpan(latitudeDelta: 0.4, longitudeDelta: 0.4) let initialRegion = MKCoordinateRegion(center: centerCoordinate, span: initialSpan) self.mapView.setRegion(initialRegion, animated: true) }
Copyright © ITmedia, Inc. All Rights Reserved.