gpt4 book ai didi

swift - 如何使用 SwiftUI 获取当前位置?

转载 作者:行者123 更新时间:2023-12-04 08:20:13 53 4
gpt4 key购买 nike

尝试使用 swiftUI 获取当前位置。下面的代码,无法使用 didUpdateLocations 委托(delegate)进行初始化。

class GetLocation : BindableObject {
var didChange = PassthroughSubject<GetLocation,Never>()

var location : CLLocation {
didSet {
didChange.send(self)
}
}
init() {}
}

最佳答案

我在 https://github.com/himbeles/LocationProvider 上编写了一个带有使用说明的单文件 swift 包.它提供了一个 ObservableObject CLLocationManager 及其委托(delegate)的-type 包装类。
有一个@Published房产 location可以直接在 SwiftUI 中使用,还有一个 PassthroughSubject<CLLocation, Never>调用locationWillChange您可以通过 Combine 订阅。两者都在每个 didUpdateLocations 上更新CLLocationManager 的事件.
它还处理以前拒绝访问位置的情况:默认行为是向用户显示在应用程序设置中启用访问的请求以及前往那里的链接。
在 SwiftUI (> iOS 14, > macOS 11) 中,用作

import SwiftUI
import LocationProvider

struct ContentView: View {
@StateObject var locationProvider = LocationProvider()

var body: some View {
VStack{
Text("latitude \(locationProvider.location?.coordinate.latitude ?? 0)")
Text("longitude \(locationProvider.location?.coordinate.longitude ?? 0)")
}
.onAppear {
do {try locationProvider.start()}
catch {
print("No location access.")
locationProvider.requestAuthorization()
}
}
}
}

关于swift - 如何使用 SwiftUI 获取当前位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56533059/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com