mirror of
https://github.com/FoggedLens/deflock-app.git
synced 2026-02-12 16:52:51 +00:00
edit line
This commit is contained in:
@@ -85,6 +85,7 @@ class UploadQueueState extends ChangeNotifier {
|
||||
final editedTags = Map<String, String>.from(upload.profile.tags);
|
||||
editedTags['direction'] = upload.direction.toStringAsFixed(0);
|
||||
editedTags['_pending_upload'] = 'true'; // Mark as pending upload
|
||||
editedTags['_original_node_id'] = session.originalNode.id.toString(); // Track original for line drawing
|
||||
|
||||
final editedNode = OsmCameraNode(
|
||||
id: tempId,
|
||||
|
||||
@@ -312,9 +312,13 @@ class MapViewState extends State<MapView> {
|
||||
editSession: editSession,
|
||||
);
|
||||
|
||||
// Build edit lines connecting original cameras to their edited positions
|
||||
final editLines = _buildEditLines(cameras);
|
||||
|
||||
return Stack(
|
||||
children: [
|
||||
PolygonLayer(polygons: overlays),
|
||||
if (editLines.isNotEmpty) PolylineLayer(polylines: editLines),
|
||||
MarkerLayer(markers: markers),
|
||||
],
|
||||
);
|
||||
@@ -390,5 +394,37 @@ class MapViewState extends State<MapView> {
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
/// Build polylines connecting original cameras to their edited positions
|
||||
List<Polyline> _buildEditLines(List<OsmCameraNode> cameras) {
|
||||
final lines = <Polyline>[];
|
||||
|
||||
// Create a lookup map of original node IDs to their coordinates
|
||||
final originalNodes = <int, LatLng>{};
|
||||
for (final camera in cameras) {
|
||||
if (camera.tags['_pending_edit'] == 'true') {
|
||||
originalNodes[camera.id] = camera.coord;
|
||||
}
|
||||
}
|
||||
|
||||
// Find edited cameras and draw lines to their originals
|
||||
for (final camera in cameras) {
|
||||
final originalIdStr = camera.tags['_original_node_id'];
|
||||
if (originalIdStr != null && camera.tags['_pending_upload'] == 'true') {
|
||||
final originalId = int.tryParse(originalIdStr);
|
||||
final originalCoord = originalId != null ? originalNodes[originalId] : null;
|
||||
|
||||
if (originalCoord != null) {
|
||||
lines.add(Polyline(
|
||||
points: [originalCoord, camera.coord],
|
||||
color: Colors.orange.withOpacity(0.7),
|
||||
strokeWidth: 2.0,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return lines;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user