Meet MapKit for SwiftUI

RSS for tag

Discuss the WWDC23 Session Meet MapKit for SwiftUI

View Session

Posts under wwdc2023-10043 tag

33 Posts
Sort by:
Post not yet marked as solved
1 Replies
774 Views
I'm putting together a really simple demo/learning app to try out some of the new features of iOS 17, and I've found when adding a Map to an existing TabView, the map is extending itself over the tab, which is actually still visible and can be interacted with, but is basically hidden. There may be a modifier or something I'm missing to tell the map to stay in its frame, but I haven't found it. I have tried ones like safeAreaInsets, but that didn't seem to be right. Here's my super-simple view: TabView { Text("Not the map") .tabItem { Label("Not Map", systemImage: "person") } Map() .tabItem { Label("Map", systemImage: "map") } } And here's how it looks in the Simulator: I will file a feedback for this, but didn't want to too quickly assume it's a bug when it's just as likely I'm not doing something right (if not more so).
Posted Last updated
.
Post not yet marked as solved
0 Replies
555 Views
Using Xcode 15.0 beta 4 I have MapCoordinate struct: private struct MapCoordinate: Equatable { let location: Location let latitude: Double let longitude: Double var coordinate: CLLocationCoordinate2D { return CLLocationCoordinate2D(latitude: latitude, longitude: longitude) } init?(location: Location) { guard let latitude = location.latitude, let longitude = location.longitude else { return nil } self.location = location self.latitude = latitude self.longitude = longitude } } mapCoordinate and radius state variables: @State private var mapCoordinate: MapCoordinate? @State private var radius: CLLocationDistance And a mapView: @ViewBuilder var mapView: some View { Map { if let mapCoordinate { let annotationTitle = radius.toMeasurement(unit: .meters, convertedTo: .kilometers) Annotation(annotationTitle, coordinate: mapCoordinate.coordinate) { Image(systemImage: .mapPinEllipse) .fontWeight(.semibold) } MapCircle(center: mapCoordinate.coordinate, radius: radius) .foregroundStyle(.teal.opacity(circleOpacity)) .stroke(.teal, lineWidth: circleStrokeLineWidth) } } .mapStyle(.standard(elevation: .realistic)) .animation(.easeInOut, value: mapCoordinate) } When updating mapCoordinate the Annotation will animate correctly to the new coordinates, but the MapCircle will not update or change scale for neither mapCoordinate or radius changes. Ideas?
Posted
by itayAm.
Last updated
.
Post not yet marked as solved
3 Replies
1.2k Views
Map(position: $position, selection: $selectedResult) { MapPolyline(coordinates: track).stroke(.blue, lineWidth: 5) } When the @State track: [CLLocationCoordinates] is growing with new data (new coordinates appended) how can we reach that Map and MapPolyline is automatically refreshed?
Posted
by hlmSft.
Last updated
.
Post not yet marked as solved
1 Replies
1.1k Views
Hi, Can someone explain how the Map() position should work? struct ContentView: View { @State private var position: MapCameraPosition = .userLocation(followsHeading: true, fallback: .automatic) var body: some View { Map(position: $position) { UserAnnotation() } } } I was expecting the map to zoom in to users location but it shows the map zoomed out to the max instead. Location is authorized. I've also added the location button. .mapControls { MapUserLocationButton() } Pressing it zooms in to the user's location without issues. Thanks!
Posted
by macmac72.
Last updated
.
Post not yet marked as solved
0 Replies
715 Views
I am flowing the code, but I have an error message coming when I code myself with Xcode for WWDC 23. The Section is Meet Mapkit for SwiftUI.
Posted
by Shadowr2.
Last updated
.
Post not yet marked as solved
1 Replies
533 Views
This code produces error "Publishing changes from within view updates is not allowed, this will cause undefined behavior." when displaying Annotation, but not when displaying Marker. I'd like to understand why and so far have not figured it out. import SwiftUI import MapKit struct ContentView: View { @StateObject var annotationViewModel = AnnotationViewModel() @State private var position: MapCameraPosition = .automatic var body: some View { Map(position: $position) { ForEach(annotationViewModel.annotations, id: \.self) { result in // Marker(result.title!, systemImage: "t.circle.fill", coordinate: result.coordinate) Annotation(result.title!, coordinate: result.coordinate) { Image(systemName: "t.circle.fill") } } } .mapStyle(.standard(elevation: .flat)) } } class MyAnnotation: NSObject, Identifiable { let id: UUID let title: String? let coordinate: CLLocationCoordinate2D init(id: UUID, title: String?, coordinate: CLLocationCoordinate2D) { self.id = id self.title = title self.coordinate = coordinate } } extension CLLocationCoordinate2D { static let ch = CLLocationCoordinate2D(latitude: 43.653734011477184, longitude: -79.38415146943686) } class AnnotationViewModel: NSObject, ObservableObject { @Published var annotations = [ MyAnnotation(id: UUID(), title: "CITY HALL", coordinate: .ch), ] }
Posted
by macmac72.
Last updated
.
Post not yet marked as solved
0 Replies
697 Views
Hi, Tile overlays, the method to use other sources than Apple's maps, are not covered (yet). What would be the best way of implementing them now, in SwiftUI with the new MapKit? Thanks -Werner
Posted
by longW.
Last updated
.
Post not yet marked as solved
0 Replies
396 Views
Have a map. I have two pins. i have two buttons. When one button is pressed it goes to first pin. When second button is pressed it goes to second pin. The problem is if I move the map at all then press second button the first button vanishes and the map hasn’t moved - wonder if this is a bug. I can surely put the code
Posted Last updated
.
Post not yet marked as solved
0 Replies
570 Views
The new Map builder SwiftUI is awesome. Does it support cluster annotations? I have opened FB12244017. Thank you very much!
Posted
by Bolsinga.
Last updated
.