From 525b1b2509ae985dabe57bd6ec898dbb9e077f9e Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 25 Mar 2024 19:20:36 -0700 Subject: [PATCH] More map cleanup --- .../Helpers/Map/MapContent/MeshMapContent.swift | 9 ++++----- .../Helpers/Map/MapContent/NodeMapContent.swift | 8 +++----- .../Views/Nodes/Helpers/Map/MapSettingsForm.swift | 15 ++++++++------- .../Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift | 3 ++- Meshtastic/Views/Nodes/MeshMap.swift | 7 +------ 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/Meshtastic/Views/Nodes/Helpers/Map/MapContent/MeshMapContent.swift b/Meshtastic/Views/Nodes/Helpers/Map/MapContent/MeshMapContent.swift index e64febb5..19bcd6ca 100644 --- a/Meshtastic/Views/Nodes/Helpers/Map/MapContent/MeshMapContent.swift +++ b/Meshtastic/Views/Nodes/Helpers/Map/MapContent/MeshMapContent.swift @@ -8,14 +8,9 @@ import SwiftUI import MapKit -import SwiftUI -import MapKit - @available(iOS 17.0, macOS 14.0, *) struct MeshMapContent: MapContent { - //@State var waypoints: [WaypointEntity] = [] - @State var routes: [RouteEntity] = [] /// Parameters @Binding var showUserLocation: Bool @AppStorage("meshMapShowNodeHistory") private var showNodeHistory = false @@ -34,6 +29,10 @@ struct MeshMapContent: MapContent { @FetchRequest(fetchRequest: WaypointEntity.allWaypointssFetchRequest(), animation: .none) var waypoints: FetchedResults + + @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "name", ascending: true)], + predicate: NSPredicate(format: "enabled == true", ""), animation: .none) + private var routes: FetchedResults var delay: Double = 0 @State private var scale: CGFloat = 0.5 diff --git a/Meshtastic/Views/Nodes/Helpers/Map/MapContent/NodeMapContent.swift b/Meshtastic/Views/Nodes/Helpers/Map/MapContent/NodeMapContent.swift index 8e8d0b26..7805e288 100644 --- a/Meshtastic/Views/Nodes/Helpers/Map/MapContent/NodeMapContent.swift +++ b/Meshtastic/Views/Nodes/Helpers/Map/MapContent/NodeMapContent.swift @@ -6,6 +6,7 @@ // import SwiftUI import MapKit +import CoreData @available(iOS 17.0, macOS 14.0, *) struct NodeMapContent: MapContent { @@ -16,10 +17,12 @@ struct NodeMapContent: MapContent { /// Map State User Defaults @AppStorage("meshMapShowNodeHistory") private var showNodeHistory = false @AppStorage("meshMapShowRouteLines") private var showRouteLines = false + @AppStorage("enableMapWaypoints") private var showWaypoints = false @AppStorage("enableMapConvexHull") private var showConvexHull = false @AppStorage("enableMapTraffic") private var showTraffic: Bool = false @AppStorage("enableMapPointsOfInterest") private var showPointsOfInterest: Bool = false @AppStorage("mapLayer") private var selectedMapLayer: MapLayer = .hybrid + // Map Configuration @Namespace var mapScope @State var mapStyle: MapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: .all, showsTraffic: true) @@ -31,9 +34,6 @@ struct NodeMapContent: MapContent { @State var selectedPosition: PositionEntity? @State var isMeshMap = false - //let region: MKCoordinateRegion - - @MapContentBuilder var nodeMap: some MapContent { let positionArray = node.positions?.array as? [PositionEntity] ?? [] @@ -43,7 +43,6 @@ struct NodeMapContent: MapContent { /// Node Color from node.num let nodeColor = UIColor(hex: UInt32(node.num)) - /// Node Annotations ForEach(positionArray, id: \.id) { position in let pf = PositionFlags(rawValue: Int(position.nodePosition?.metadata?.positionFlags ?? 771)) @@ -79,7 +78,6 @@ struct NodeMapContent: MapContent { MapPolyline(coordinates: lineCoords) .stroke(gradient, style: dashed) } - /// Node Annotations ForEach(positionArray, id: \.id) { position in Annotation(position.latest ? node.user?.shortName ?? "?": "", coordinate: position.coordinate) { diff --git a/Meshtastic/Views/Nodes/Helpers/Map/MapSettingsForm.swift b/Meshtastic/Views/Nodes/Helpers/Map/MapSettingsForm.swift index 80d6a61f..9a775911 100644 --- a/Meshtastic/Views/Nodes/Helpers/Map/MapSettingsForm.swift +++ b/Meshtastic/Views/Nodes/Helpers/Map/MapSettingsForm.swift @@ -55,14 +55,15 @@ struct MapSettingsForm: View { .onChange(of: meshMapDistance) { newMeshMapDistance in UserDefaults.meshMapDistance = newMeshMapDistance } + Toggle(isOn: $waypoints) { + Label("Show Waypoints ", systemImage: "signpost.right.and.left") + } + .toggleStyle(SwitchToggleStyle(tint: .accentColor)) + .onTapGesture { + UserDefaults.enableMapWaypoints = !waypoints + } } - Toggle(isOn: $waypoints) { - Label("Show Waypoints ", systemImage: "signpost.right.and.left") - } - .toggleStyle(SwitchToggleStyle(tint: .accentColor)) - .onTapGesture { - UserDefaults.enableMapWaypoints = !waypoints - } + Toggle(isOn: $nodeHistory) { Label("Node History", systemImage: "building.columns.fill") } diff --git a/Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift b/Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift index bd512e94..6bb5c18c 100644 --- a/Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift +++ b/Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift @@ -31,7 +31,6 @@ struct NodeMapSwiftUI: View { @State var isLookingAround = false @State var isShowingAltitude = false @State var isEditingSettings = false - @State var selectedPosition: PositionEntity? @State var isMeshMap = false @State private var mapRegion = MKCoordinateRegion.init() @@ -42,6 +41,8 @@ struct NodeMapSwiftUI: View { ), animation: .none) private var waypoints: FetchedResults + + var body: some View { var mostRecent = node.positions?.lastObject as? PositionEntity diff --git a/Meshtastic/Views/Nodes/MeshMap.swift b/Meshtastic/Views/Nodes/MeshMap.swift index 0787ea55..2b17ab92 100644 --- a/Meshtastic/Views/Nodes/MeshMap.swift +++ b/Meshtastic/Views/Nodes/MeshMap.swift @@ -38,18 +38,13 @@ struct MeshMap: View { @State var newWaypointCoord: CLLocationCoordinate2D? @State var isMeshMap = true - - @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "name", ascending: true)], - predicate: NSPredicate(format: "enabled == true", ""), animation: .none) - private var routes: FetchedResults - var body: some View { NavigationStack { ZStack { MapReader { reader in Map(position: $position, bounds: MapCameraBounds(minimumDistance: 1, maximumDistance: .infinity), scope: mapScope) { - MeshMapContent(routes: Array(routes), showUserLocation: $showUserLocation, showTraffic: $showTraffic, showPointsOfInterest: $showPointsOfInterest, selectedMapLayer: $selectedMapLayer, selectedPosition: $selectedPosition, selectedWaypoint: $selectedWaypoint) + MeshMapContent(showUserLocation: $showUserLocation, showTraffic: $showTraffic, showPointsOfInterest: $showPointsOfInterest, selectedMapLayer: $selectedMapLayer, selectedPosition: $selectedPosition, selectedWaypoint: $selectedWaypoint) } .mapScope(mapScope)