現在マップアプリを作成しています。
アプリを立ち上げた時に現在地を表示して最大までズームした状態にしておきたいです。
図で説明
試したこと
こんな感じのコードを書き、実行してみました。
viewDidLoad
1 2let span : MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: **0.001**, longitudeDelta: **0.001**) 3 let region : MKCoordinateRegion = MKCoordinateRegion(center: mapView.centerCoordinate, span: span) 4 5 6 7 mapView.setRegion(region,animated:true) 8 9 // 現在位置表示の有効化 10 mapView.showsUserLocation = true 11 // 現在位置設定(デバイスの動きとしてこの時の一回だけ中心位置が現在位置で更新される) 12 mapView.userTrackingMode = .followWithHeading
ですが、変わらずアプリを立ち上げた時の状態は↑のままでした。
試したこと2
そこで、別にプロジェクトを作り、他のコードを書いてみました。↓
viewDidLoad
1// MapViewを生成. 2 var mapView : MKMapView = MKMapView(frame: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)) 3 4 // MapViewの中心位置を指定. 5 mapView.centerCoordinate = CLLocationCoordinate2DMake(37.331741, -122.030333) 6 7 // 縮尺を変更. 8 // 倍率を指定. 9 let span : MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: 0.0011, longitudeDelta: 0.001) 10 11 // MapViewで指定した中心位置とMKCoordinateSapnで宣言したspanを指定する. 12 let region : MKCoordinateRegion = MKCoordinateRegion(center: mapView.centerCoordinate, span: span) 13 14 // MapViewのregionプロパティにregionを指定. 15 mapView.region = region 16 17 // MapViewをviewに追加. 18 self.view.addSubview(mapView)
このコードではズームされて表示されているものの、記述してある場所がアップデ表示されてしまいます。
なので、
↓のコードを
mapView.centerCoordinate = CLLocationCoordinate2DMake(37.331741, -122.030333)
↓のように、現在地を表示させるように変えたんですが、真っ青の画面が表示され、現在地も地図も表示されることはありませんでした。
mapView.centerCoordinate = mapView.userLocation.coordinate
この↑のコードが間違っていると考えているのですが、
どのようにすればうまく理想通りに表示させることができるでしょうか?
あなたの回答
tips
プレビュー