在 iOS 17.0 中已弃用 Map(coordinateRegion: , shownUserLocation: )

问题描述 投票:0回答:1

关于如何替换此调用有什么想法吗?它非常有用,现已在 iOS 17.0 中被弃用。

Map(coordinateRegion: $viewModel.region, showsUserLocation: true)

这是通过以下方式提供的:

enum MapDetails {
     static let startingLocation = CLLocationCoordinate2D(latitude: GlobalVariables.latitude, longitude: GlobalVariables.longitude)
     static let defaultSpan      = MKCoordinateSpan(latitudeDelta: GlobalVariables.span, longitudeDelta: GlobalVariables.span)
}

final class LocationViewModel: NSObject, ObservableObject, CLLocationManagerDelegate {

var locationManager:  CLLocationManager?
@Published var region = MKCoordinateRegion(center: MapDetails.startingLocation, span: MapDetails.defaultSpan)

...

黄色警告是:

“init(coordinateRegion:interactionModes:showsUserLocation:userTrackingMode:)”在 iOS 17.0 中已弃用:使用采用 MapContentBuilder 的地图初始值设定项。

是否有我忽略的明显替代品?

swiftui mapkit ios17
1个回答
0
投票

请使用

init(position:bounds:interactionModes:scope:content:)
初始化程序。这需要
NapCameraPosition
的绑定,因此您应该相应地更改视图模型中的类型。

请注意,您可以使用

MapCameraPosition
MKCoordinateRegion
 创建 
MapCameraPosition.region(_:)

要显示用户的位置,请使用

UserAnnotation

Map(position: $viewModel.region) {
    UserAnnotation()
}
© www.soinside.com 2019 - 2024. All rights reserved.