使用 SwiftUI 和 MapKit 检索用户当前位置

Posted

技术标签:

【中文标题】使用 SwiftUI 和 MapKit 检索用户当前位置【英文标题】:Retrieve user current location using SwiftUI and MapKit 【发布时间】:2020-01-16 20:18:11 【问题描述】:

我想知道如何使用 SwiftUI 框架获取用户当前位置。我已经显示了地图,但我想知道如何获取当前位置的用户纬度和经度。随意创建一个类,但请解释类操作以及在哪里实现它。 通过使用 UIViewRepresentable 和名为 makeUIView 和 updateUIView 的两个函数来显示地图 提前谢谢你

【问题讨论】:

查看***.com/questions/56533059/…获取用户的当前位置和developer.apple.com/tutorials/swiftui/…。 【参考方案1】:

创建CLLocationManager的实例:

var locManager = CLLocationManager()
locManager.requestWhenInUseAuthorization()

然后获取详细信息:

var currentLocation: CLLocation!

if( CLLocationManager.authorizationStatus() == .authorizedWhenInUse ||
    CLLocationManager.authorizationStatus() ==  .authorizedAlways)

  currentLocation = locManager.location


然后得到经度或纬度:

let longitude = currentLocation.coordinate.longitude
let latitude = currentLocation.coordinate.latitude

如果您想在 swiftUI 视图脚本中执行它,请创建实例:

@ObservedObject var locationManager = LocationManager()

分别获取:

var userLatitude: String 
    return "\(locationManager.lastLocation?.coordinate.latitude ?? 0)"

var userLongitude: String 
        return "\(locationManager.lastLocation?.coordinate.longitude ?? 0)"

【讨论】:

我可以把它放在 let coordinate = CLLocationCoordinate2D(latitude: latitude , longitude: longitude) 里面吗 不,你必须先为它创建一个实例,这样会更好,因为你只需要打印出来就像print("Latitude: \(userLatitude) and Logitude: \(userLongitude)")跨度> 问题是我如何把它放在地图视图中 如何创建一个实例呢? 查看***.com/questions/56553527/… 来放置我刚刚向您展示的如何进入 mapView 的变量

以上是关于使用 SwiftUI 和 MapKit 检索用户当前位置的主要内容,如果未能解决你的问题,请参考以下文章

你能从 SwiftUI 中的 MapKit 数据库中获取纬度和经度吗

Swift:SwiftUI中MapKit的使用体验

SwiftUI MapKit UIViewRepresentable 无法显示警报

使用 SwiftUI 将单个引脚添加到 Mapkit

如何在 SwiftUI MapKit 的 updateUIView 中添加“.setRegion”?

在 swiftUI 2 中向 MapKit 添加 MapMarker