質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

479閲覧

Xcodeのシミュレータの挙動が毎回違うのはバグですか?

clo.momo

総合スコア27

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2018/05/27 16:21

単純な地図アプリを作っているのですが、シミュレータの挙動が毎回違うのはバグでしょうか?
具体的には次のような挙動をします

  • 縮尺の度合いが世界地図レベルから近所の駅がわかるくらいのレベルに違う

  • freeway driveをすると拡大しようとして最初に戻る→拡大しようとして・・・を繰り返す。いつのまにかちゃんと拡大されてる

  • freeway driveで正常に拡大された後に縮小や拡大をしてもすぐに元の縮尺に戻る

Swift

1class ViewController: UIViewController ,MKMapViewDelegate,CLLocationManagerDelegate{ 2 @IBOutlet weak var mapView: MKMapView! 3 4 let locationManager = CLLocationManager() 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 //mapViewからイベントを取得 9 mapView.delegate = self 10 11 mapView.frame = self.view.frame 12 self.view.addSubview(mapView) 13 14 //CLLocationManagerからイベントを取得 15 locationManager.delegate = self 16 //位置情報の更新 17 locationManager.startUpdatingLocation() 18 19 } 20 21 22 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 23 print("位置情報取得 成功") 24 25 26 //マップのコード 27 //表示タイプを地図に設定 28 mapView.mapType = MKMapType.standard 29 30 //回転を無効 31 mapView.isRotateEnabled = false 32 33 //ユーザーの位置をマップに表示する 34 mapView.showsUserLocation = true 35 36 //ユーザー追跡モード アニメーション 37 mapView.userTrackingMode = MKUserTrackingMode.follow 38 39 //mapViewのセンターにユーザーの位置を設定 40 mapView.setCenter(mapView.userLocation.coordinate, animated: false) 41 42 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらくですが、表示のマップの縮尺を設定していないからではないでしょうか?

Swift

1//現在位置をマップの中心にして登録する。 2let center = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude) 3let span = MKCoordinateSpanMake(0.05, 0.05) // <-ここの行 4let region = MKCoordinateRegionMake(center, span) // <-ここの行 5testMapView.setRegion(region, animated:true) // <-ここの行

の3行を追加してみて、試してみてはどうでしょうか?

投稿2018/05/27 16:55

編集2018/05/27 16:58
hameji

総合スコア1380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

clo.momo

2018/05/28 00:58

回答ありがとうございます 確かに、縮尺をセットすると1つ目と2つ目は解決します。 ですが3つ目が解決しません。 新しい位置を取得したのと同時にセットした縮尺にリセットされ、画面もユーザーが中心に戻ってしまいます。 ・移動中に好きな縮尺の調整できる ・別の場所も見れる ・画面操作をやめて10秒ほどすると縮尺がリセットされる この機能を追加するにはどうすればいいでしょうか?
clo.momo

2018/05/28 08:35

追加する位置を func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])の外にすると解決しました。 ありがとうございました!
hameji

2018/05/28 08:51

解決できてよかったです。 didUpdateLocationsに記載すると、locationをGPSが取得する毎に、 地図をその地点にセットし直すため、表示が数秒で動くものだと思います。 追加機能を実装するには、 let map = MKMapView() map.isPitchEnabled = true map.isScrollEnabled = ture に設定すればいいのではないでしょうか。 ちなみにstoryboardでmapViewを配置しているなら、 IBOutletで繋がないといけないです。
clo.momo

2018/05/28 12:13

追加機能はない方が良いことに気づいたのでなしにしました。 丁寧にありがとうございました! よければ次もお願いします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問