SwiftUI:如何在API调用后移动MapPin?
我正在尝试使用SwiftUI的新地图组件。到目前为止,一切都很好,但现在,我正在努力在API响应后更新地图上的MapPin。(以便使用贴图移动更新接点)。 我已经使用了网络呼叫,呼叫工作正常,但是MapPin没有更新,我不明白为什么 下面是一些代码: 网络呼叫:SwiftUI:如何在API调用后移动MapPin?,swiftui,mapkit,Swiftui,Mapkit,我正在尝试使用SwiftUI的新地图组件。到目前为止,一切都很好,但现在,我正在努力在API响应后更新地图上的MapPin。(以便使用贴图移动更新接点)。 我已经使用了网络呼叫,呼叫工作正常,但是MapPin没有更新,我不明白为什么 下面是一些代码: 网络呼叫: @ObservedObject var places = Resource(endpoint: getPlaces()) 地图声明: var locations: [Location] Map(coordinateRegion:
@ObservedObject var places = Resource(endpoint: getPlaces())
地图声明:
var locations: [Location]
Map(coordinateRegion: $viewModel.region,
interactionModes: .all,
showsUserLocation: true,
userTrackingMode: $trackingMode,
annotationItems: locations) { location -> MapPin in
MapPin(coordinate: location.coordinate, tint: .red)
}
位置结构:
struct Place: Codable {
let title: String
let coordinates: Coordinates
}
位置结构:
struct Location: Identifiable {
let id = UUID()
let title: String
let coordinate: CLLocationCoordinate2D
}
这里是我尝试建立联系的地方:
MapView(followUser: $followUser, locations: convertPlacesToLocation(newPlaces: places))
private func convertPlacesToLocation(newPlaces: Resource<[Place]>) -> [Location] {
var locations: [Location] = []
if let values = newPlaces.value {
for place in values {
locations.append(Location(title: place.title, coordinate: .init(latitude: place.coordinates.lat, longitude: place.coordinates.lon)))
}
}
return locations
}
你能告诉我你在哪里/如何更新
位置吗
?是的,我更新了问题好的,我找到了:这是因为我在地图视图中使用“@State”来转移位置。。。但是我不明白,你能告诉我你在哪里/如何更新位置吗?
?是的,我更新了问题好的,我找到了:这是因为我在地图视图中使用“@State”来转移位置。。。但我不明白
final class Resource<A>: ObservableObject {
let endpoint: Endpoint<A>
@Published var value: A?
init(endpoint: Endpoint<A>) {
self.endpoint = endpoint
reload()
}
func reload() {
URLSession.shared.load(endpoint) { result in
DispatchQueue.main.async {
self.value = try? result.get()
}
}
}
}