diff --git a/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate b/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate index 89d39f91..85e4e4d5 100644 Binary files a/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate and b/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/MeshtasticClient/Views/Map/MapViewModule.swift b/MeshtasticClient/Views/Map/MapViewModule.swift index 088ff3e2..dddcc826 100644 --- a/MeshtasticClient/Views/Map/MapViewModule.swift +++ b/MeshtasticClient/Views/Map/MapViewModule.swift @@ -41,6 +41,8 @@ public struct MapView: UIViewRepresentable { @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "lastHeard", ascending: false)], animation: .default) private var locationNodes: FetchedResults + //@State private var locationNodes: [NodeInfoEntity] + public init( //region: Binding = .constant(MKCoordinateRegion()), customMapOverlay: CustomMapOverlay? = nil, @@ -95,7 +97,7 @@ public struct MapView: UIViewRepresentable { //self.annotations = annotations - //self.locationNodes = locationNodes + self.locationNodes = locationNodes self.overlays = overlays @@ -106,9 +108,24 @@ public struct MapView: UIViewRepresentable { mapView.delegate = context.coordinator mapView.register(PositionAnnotationView.self, forAnnotationViewWithReuseIdentifier: NSStringFromClass(PositionAnnotationView.self)) + Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { timer in + for node in self.locationNodes { + // try and get the last position + if (node.positions?.count ?? 0) > 0 && (node.positions!.lastObject as! PositionEntity).coordinate != nil { + let annotation = PositionAnnotation() + annotation.coordinate = (node.positions!.lastObject as! PositionEntity).coordinate! + annotation.title = node.user?.longName ?? "Unknown" + annotation.shortName = node.user?.shortName?.uppercased() ?? "???" + + mapView.addAnnotation(annotation) + } + } + } + return mapView } + public func updateUIView(_ mapView: MKMapView, context: Context) { //if self.userTrackingMode == MKUserTrackingMode.none && (mapView.region.center.latitude != self.region.center.latitude || mapView.region.center.longitude != self.region.center.longitude) { diff --git a/MeshtasticClient/Views/Nodes/NodeMap.swift b/MeshtasticClient/Views/Nodes/NodeMap.swift index 2e1123b4..b9cc26b1 100644 --- a/MeshtasticClient/Views/Nodes/NodeMap.swift +++ b/MeshtasticClient/Views/Nodes/NodeMap.swift @@ -107,6 +107,7 @@ struct NodeMap: View { userTrackingMode: self.userTrackingMode, userLocation: self.$userLocation, //annotations: self.annotations, + //locationNodes: self.locationNodes.map({ nodeinfo in return nodeinfo }), overlays: self.overlays )