我想使用自己的地图注释,并且试图隐藏地图中的默认注释。
我发现这可以从地图视图中删除每个默认注释
let configuration = MKStandardMapConfiguration()
configuration.pointOfInterestFilter = MKPointOfInterestFilter(including: [])
Run Code Online (Sandbox Code Playgroud)
但如何将此配置应用于 SwiftUI 中的地图视图?
import SwiftUI
import MapKit
@available(iOS 16.0, *)
struct MyMapView: View {
init (){
let configuration = MKStandardMapConfiguration()
configuration.pointOfInterestFilter = MKPointOfInterestFilter(including: [])
}
@State private var region = MKCoordinateRegion(
center: CLLocationCoordinate2D(
latitude: 41.59710,
longitude: -74.14976),
span: MKCoordinateSpan(
latitudeDelta: 0.0125,
longitudeDelta: 0.0125)
)
var body: some View {
Map(coordinateRegion: $region)
.edgesIgnoringSafeArea(.all)
.disabled(true)
}
}
Run Code Online (Sandbox Code Playgroud)
小智 1
SwiftUIMap视图不支持此功能。要获得可以执行此操作的地图,您需要使用MKMapViewwhich is in UIKit。这是如何在 SwiftUI 中使用它的示例
import SwiftUI
import MapKit
struct ContentView: View {
var body: some View {
MapView()
.edgesIgnoringSafeArea(.all)
.disabled(true)
}
}
struct MapView: UIViewRepresentable {
let configuration: MKStandardMapConfiguration
private var center: CLLocationCoordinate2D {
CLLocationCoordinate2D(latitude: 41.59710, longitude: -74.14976)
}
private var coordinateSpan: MKCoordinateSpan {
MKCoordinateSpan(latitudeDelta: 0.0125, longitudeDelta: 0.0125)
}
init() {
configuration = MKStandardMapConfiguration()
configuration.pointOfInterestFilter = MKPointOfInterestFilter(including: [])
}
func makeUIView(context: Context) -> MKMapView {
let mapView = MKMapView()
mapView.region = MKCoordinateRegion(center: center, span: coordinateSpan)
mapView.preferredConfiguration = configuration
return mapView
}
func updateUIView(_ uiView: MKMapView, context: Context) { }
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1062 次 |
| 最近记录: |