highlight selected node

This commit is contained in:
stopflock
2025-10-01 13:36:51 -05:00
parent 1aeae18ebc
commit 792f94065d
3 changed files with 34 additions and 11 deletions
+20 -10
View File
@@ -95,22 +95,32 @@ class CameraMarkersBuilder {
required List<OsmNode> cameras,
required MapController mapController,
LatLng? userLocation,
int? selectedNodeId,
void Function(OsmNode)? onNodeTap,
}) {
final markers = <Marker>[
// Camera markers
...cameras
.where(_isValidCameraCoordinate)
.map((n) => Marker(
point: n.coord,
width: kCameraIconDiameter,
height: kCameraIconDiameter,
child: CameraMapMarker(
node: n,
mapController: mapController,
onNodeTap: onNodeTap,
),
)),
.map((n) {
// Check if this node should be highlighted (selected) or dimmed
final isSelected = selectedNodeId == n.id;
final shouldDim = selectedNodeId != null && !isSelected;
return Marker(
point: n.coord,
width: kCameraIconDiameter,
height: kCameraIconDiameter,
child: Opacity(
opacity: shouldDim ? 0.5 : 1.0,
child: CameraMapMarker(
node: n,
mapController: mapController,
onNodeTap: onNodeTap,
),
),
);
}),
// User location marker
if (userLocation != null)
+3
View File
@@ -35,12 +35,14 @@ class MapView extends StatefulWidget {
required this.followMeMode,
required this.onUserGesture,
this.sheetHeight = 0.0,
this.selectedNodeId,
this.onNodeTap,
});
final FollowMeMode followMeMode;
final VoidCallback onUserGesture;
final double sheetHeight;
final int? selectedNodeId;
final void Function(OsmNode)? onNodeTap;
@override
@@ -330,6 +332,7 @@ class MapViewState extends State<MapView> {
cameras: cameras,
mapController: _controller.mapController,
userLocation: _gpsController.currentLocation,
selectedNodeId: widget.selectedNodeId,
onNodeTap: widget.onNodeTap,
);