SwiftUI:如何在API调用后移动MapPin?

SwiftUI:如何在API调用后移动MapPin?,swiftui,mapkit,Swiftui,Mapkit,我正在尝试使用SwiftUI的新地图组件。到目前为止,一切都很好,但现在,我正在努力在API响应后更新地图上的MapPin。(以便使用贴图移动更新接点)。 我已经使用了网络呼叫,呼叫工作正常,但是MapPin没有更新,我不明白为什么 下面是一些代码: 网络呼叫: @ObservedObject var places = Resource(endpoint: getPlaces()) 地图声明: var locations: [Location] Map(coordinateRegion:

我正在尝试使用SwiftUI的新地图组件。到目前为止,一切都很好,但现在,我正在努力在API响应后更新地图上的MapPin。(以便使用贴图移动更新接点)。 我已经使用了网络呼叫,呼叫工作正常,但是MapPin没有更新,我不明白为什么

下面是一些代码:

网络呼叫:

@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()
            }
        }
    }
}