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

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

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

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

Q&A

解決済

1回答

657閲覧

UIViewRepresentableを用いてupdateUIViewに指定したspanの値が反映されない

ryo9990

総合スコア1

Swift

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

0グッド

0クリップ

投稿2023/04/24 01:15

編集2023/04/24 01:17

実現したいこと

UIViewRepresentableを用いて、現在地を取得して現在地周辺を拡大して表示したいです。
お力をお借りできると大変助かります。
よろしくお願いします!

前提

下記のコードで、spanで指定したように拡大表示がされない状態です。
日本列島が丸ごと引いた状態で表示されてしまいます。
現在位置は正しく表示されています。(zoomして確認できます。)

swift

1func updateUIView(_ view: MKMapView, context: Context) { 2 // ユーザーの現在位置を取得 3 if let userLocation = view.userLocation.location { 4 // 地図の表示領域を設定 5 let coordinate = userLocation.coordinate 6 let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01) 7 let region = MKCoordinateRegion(center: coordinate, span: span) 8 view.setRegion(region, animated: true) 9 } 10 }

全体のソースコード

swift

1import SwiftUI 2import MapKit 3 4struct MapView: UIViewRepresentable { 5 func makeUIView(context: Context) -> MKMapView { 6 let mapView = MKMapView() 7 mapView.showsUserLocation = true 8 mapView.userTrackingMode = .follow 9 return mapView 10 } 11 12 func updateUIView(_ view: MKMapView, context: Context) { 13 // ユーザーの現在位置を取得 14 if let userLocation = view.userLocation.location { 15 // 地図の表示領域を設定 16 let coordinate = userLocation.coordinate 17 let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01) 18 let region = MKCoordinateRegion(center: coordinate, span: span) 19 view.setRegion(region, animated: true) 20 } 21 } 22} 23 24struct ContentView: View { 25 var body: some View { 26 MapView() 27 .ignoresSafeArea(edges: .all) 28 .task() { 29 //位置情報へのアクセスを要求 30 let manager = CLLocationManager() 31 manager.requestWhenInUseAuthorization() 32 } 33 } 34}

試したこと

こちらのコードだと拡大表示されます。

swift

1func updateUIView(_ uiView: MKMapView, context: Context) { 2 let coordinate = CLLocationCoordinate2D(latitude: 35.681236, longitude: 139.767125) // 東京駅の座標 3 let span = MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1) // 表示範囲 4 let region = MKCoordinateRegion(center: coordinate, span: span) // 表示領域 5 6 uiView.setRegion(region, animated: true) // 地図を表示 7 }

補足情報(FW/ツールのバージョンなど)

xcode14.3
iOS16.4

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

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

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

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

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

ryo9990

2023/04/25 06:22

ありがうございます! 現在地が取得できていない状態だったのですね。 添付していただいたサイトを参考に進めさせて頂きます!
guest

回答1

0

自己解決

https://qiita.com/m37335/items/4592f4fc40a1d2b7da05
上記のリンク先を参考に作りなおし解決しました!

投稿2023/04/25 06:23

ryo9990

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問