mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Breadcrumb lines for today for node details
This commit is contained in:
parent
db6500445f
commit
f805796af9
3 changed files with 58 additions and 38 deletions
|
|
@ -21,7 +21,7 @@ struct MapViewSwiftUI: UIViewRepresentable {
|
|||
let mapViewType: MKMapType
|
||||
let userTrackingMode: MKUserTrackingMode
|
||||
let centeringMode: CenteringMode
|
||||
|
||||
let showBreadcrumbLines: Bool
|
||||
let centerOnPositionsOnly: Bool
|
||||
@AppStorage("meshMapRecentering") private var recenter: Bool = false
|
||||
|
||||
|
|
@ -120,6 +120,16 @@ struct MapViewSwiftUI: UIViewRepresentable {
|
|||
DispatchQueue.main.async {
|
||||
self.presentCustomMapOverlayHash = self.customMapOverlay
|
||||
self.loadedLastUpdatedLocalMapFile = self.lastUpdatedLocalMapFile
|
||||
|
||||
if showBreadcrumbLines {
|
||||
let nodePositions = positions.filter { $0.time! > Calendar.current.startOfDay(for: Date()) }
|
||||
let lineCoords = nodePositions.map ({
|
||||
(position) -> CLLocationCoordinate2D in
|
||||
return position.nodeCoordinate!
|
||||
})
|
||||
let polyline = MKPolyline(coordinates: lineCoords, count: nodePositions.count)
|
||||
mapView.addOverlay(polyline)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -334,45 +344,54 @@ struct MapViewSwiftUI: UIViewRepresentable {
|
|||
|
||||
public func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
|
||||
|
||||
if let index = self.overlays.firstIndex(where: { overlay_ in overlay_.shape.hash == overlay.hash }) {
|
||||
// if let index = self.overlays.firstIndex(where: { overlay_ in overlay_.shape.hash == overlay.hash }) {
|
||||
|
||||
let unwrappedOverlay = self.overlays[index]
|
||||
if let circleOverlay = unwrappedOverlay.shape as? MKCircle {
|
||||
let renderer = MKCircleRenderer(circle: circleOverlay)
|
||||
renderer.fillColor = unwrappedOverlay.fillColor
|
||||
renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
return renderer
|
||||
} else if let polygonOverlay = unwrappedOverlay.shape as? MKPolygon {
|
||||
let renderer = MKPolygonRenderer(polygon: polygonOverlay)
|
||||
renderer.fillColor = unwrappedOverlay.fillColor
|
||||
renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
return renderer
|
||||
} else if let multiPolygonOverlay = unwrappedOverlay.shape as? MKMultiPolygon {
|
||||
let renderer = MKMultiPolygonRenderer(multiPolygon: multiPolygonOverlay)
|
||||
renderer.fillColor = unwrappedOverlay.fillColor
|
||||
renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
return renderer
|
||||
} else if let polyLineOverlay = unwrappedOverlay.shape as? MKPolyline {
|
||||
let renderer = MKPolylineRenderer(polyline: polyLineOverlay)
|
||||
renderer.fillColor = unwrappedOverlay.fillColor
|
||||
renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
return renderer
|
||||
} else if let multiPolylineOverlay = unwrappedOverlay.shape as? MKMultiPolyline {
|
||||
let renderer = MKMultiPolylineRenderer(multiPolyline: multiPolylineOverlay)
|
||||
renderer.fillColor = unwrappedOverlay.fillColor
|
||||
renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
return renderer
|
||||
} else {
|
||||
return MKOverlayRenderer()
|
||||
}
|
||||
} else if let tileOverlay = overlay as? MKTileOverlay {
|
||||
// let unwrappedOverlay = self.overlays[index]
|
||||
// if let circleOverlay = unwrappedOverlay.shape as? MKCircle {
|
||||
// let renderer = MKCircleRenderer(circle: circleOverlay)
|
||||
// renderer.fillColor = unwrappedOverlay.fillColor
|
||||
// renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
// renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
// return renderer
|
||||
// } else
|
||||
// if let polygonOverlay = unwrappedOverlay.shape as? MKPolygon {
|
||||
// let renderer = MKPolygonRenderer(polygon: polygonOverlay)
|
||||
// renderer.fillColor = unwrappedOverlay.fillColor
|
||||
// renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
// renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
// return renderer
|
||||
// } else if let multiPolygonOverlay = unwrappedOverlay.shape as? MKMultiPolygon {
|
||||
// let renderer = MKMultiPolygonRenderer(multiPolygon: multiPolygonOverlay)
|
||||
// renderer.fillColor = unwrappedOverlay.fillColor
|
||||
// renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
// renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
// return renderer
|
||||
// } else if let polyLineOverlay = unwrappedOverlay.shape as? MKPolyline {
|
||||
// let renderer = MKPolylineRenderer(polyline: polyLineOverlay)
|
||||
// renderer.fillColor = unwrappedOverlay.fillColor
|
||||
// renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
// renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
// return renderer
|
||||
// } else if let multiPolylineOverlay = unwrappedOverlay.shape as? MKMultiPolyline {
|
||||
// let renderer = MKMultiPolylineRenderer(multiPolyline: multiPolylineOverlay)
|
||||
// renderer.fillColor = unwrappedOverlay.fillColor
|
||||
// renderer.strokeColor = unwrappedOverlay.strokeColor
|
||||
// renderer.lineWidth = unwrappedOverlay.lineWidth
|
||||
// return renderer
|
||||
// }
|
||||
// else {
|
||||
// return MKOverlayRenderer()
|
||||
// }
|
||||
// } else
|
||||
if let tileOverlay = overlay as? MKTileOverlay {
|
||||
return MKTileOverlayRenderer(tileOverlay: tileOverlay)
|
||||
} else {
|
||||
if let routePolyline = overlay as? MKPolyline {
|
||||
let renderer = MKPolylineRenderer(polyline: routePolyline)
|
||||
renderer.strokeColor = UIColor.systemBlue
|
||||
renderer.lineWidth = 5
|
||||
return renderer
|
||||
}
|
||||
return MKOverlayRenderer()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,10 +71,10 @@ struct NodeDetail: View {
|
|||
mapViewType: mapType,
|
||||
userTrackingMode: MKUserTrackingMode.none,
|
||||
centeringMode: .allPositions,
|
||||
showBreadcrumbLines: true,
|
||||
centerOnPositionsOnly: true,
|
||||
customMapOverlay: self.customMapOverlay,
|
||||
overlays: self.overlays
|
||||
|
||||
)
|
||||
VStack(alignment: .leading) {
|
||||
Spacer()
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ struct NodeMap: View {
|
|||
mapViewType: mapType,
|
||||
userTrackingMode: userTrackingMode,
|
||||
centeringMode: mapCenteringMode,
|
||||
showBreadcrumbLines: false,
|
||||
centerOnPositionsOnly: false,
|
||||
customMapOverlay: self.customMapOverlay,
|
||||
overlays: self.overlays
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue