Reputation: 1516
How can I set mapType
in a MapKit Map in SwiftUI so it can appear as a 3D globe?
I'm looking for a way to set mapType
to .hybridFlyover
:
mapview.mapType = MKMapType.hybridFlyover
But for SwiftUI:
import SwiftUI
import MapKit
struct LocationGlobeView: View {
@State private var cities: [City] = [
City(coordinate: .init(latitude: 40.7128, longitude: 74.0060)),
City(coordinate: .init(latitude: 37.7749, longitude: 122.4194)),
City(coordinate: .init(latitude: 47.6062, longitude: 122.3321))
]
@State private var userTrackingMode: MapUserTrackingMode = .follow
@State private var region = MKCoordinateRegion(
center: CLLocationCoordinate2D(
latitude: 25.7617,
longitude: 80.1918
),
span: MKCoordinateSpan(
latitudeDelta: 10,
longitudeDelta: 10
)
)
var body: some View {
Map(coordinateRegion: $region,
interactionModes: MapInteractionModes.all,
showsUserLocation: true,
userTrackingMode: $userTrackingMode,
annotationItems: cities) { city in
MapAnnotation(coordinate: city.coordinate,
anchorPoint: CGPoint(x: 0.5, y: 0.5)) {
Circle()
.stroke(Color.green)
.frame(width: 44, height: 44)
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
struct LocationGlobeView_Previews: PreviewProvider {
static var previews: some View {
LocationGlobeView()
}
}
struct City: Identifiable {
let id = UUID()
let coordinate: CLLocationCoordinate2D
}
How can I make a SwiftUI view that allows for Map to be a 3D Globe?
Upvotes: 1
Views: 1129
Reputation: 2921
From macOS 14, iOS 17 on, you can use the following modifier on your Map View.
.mapStyle(.imagery())
Upvotes: 0