From ee658999d635a33002e12ce641720998792a0cd5 Mon Sep 17 00:00:00 2001 From: VALLONGOL Date: Fri, 5 Dec 2025 13:08:15 +0100 Subject: [PATCH] sistemato errore creazione minimappa in dettaglio --- .vscode/launch.json | 3 +- flightmonitor/map/map_canvas_manager.py | 19 +++++- todo.md | 86 ++----------------------- 3 files changed, 23 insertions(+), 85 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index dedb521..aa65fa0 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,7 +8,8 @@ "name": "aircraft db", "type": "debugpy", "request": "launch", - "module": "/data/aircraft_database_manager" + "module": "flightmonitor.data.aircraft_database_manager", + "cwd": "${workspaceFolder}" }, { "name": "flight monitor", diff --git a/flightmonitor/map/map_canvas_manager.py b/flightmonitor/map/map_canvas_manager.py index 9251a68..f6fe3fd 100644 --- a/flightmonitor/map/map_canvas_manager.py +++ b/flightmonitor/map/map_canvas_manager.py @@ -616,8 +616,21 @@ class MapCanvasManager: new_lon, new_lat, _ = geod.fwd(new_lon, new_lat, 0, dmy) self._request_base_map_render(new_lat, new_lon, self._current_zoom_gui) - def center_map_and_fit_patch(self, lat: float, lon: float, size_km: float): - zoom_w = calculate_zoom_level_for_geographic_size(lat, size_km * 1000, self.canvas_width, self.tile_manager.tile_size) - zoom_h = calculate_zoom_level_for_geographic_size(lat, size_km * 1000, self.canvas_height, self.tile_manager.tile_size) + def center_map_and_fit_patch( + self, lat: float, lon: float, size_km: Optional[float] = None, patch_size_km: Optional[float] = None + ): + """ + Center the map at (lat, lon) and set zoom to fit a square patch of approx size_km (or patch_size_km). + Backwards-compatible: callers may pass either `size_km` (old name) or `patch_size_km` (new callers). + If both are provided, `patch_size_km` takes precedence. + """ + # Prefer explicitly named `patch_size_km` if provided for newer callers + chosen_size_km = patch_size_km if patch_size_km is not None else size_km + if chosen_size_km is None: + logger.error("center_map_and_fit_patch called without a size_km or patch_size_km value") + return + + zoom_w = calculate_zoom_level_for_geographic_size(lat, chosen_size_km * 1000, self.canvas_width, self.tile_manager.tile_size) + zoom_h = calculate_zoom_level_for_geographic_size(lat, chosen_size_km * 1000, self.canvas_height, self.tile_manager.tile_size) zoom = min(zoom_w, zoom_h) - 1 if zoom_w and zoom_h else map_constants.DEFAULT_INITIAL_ZOOM self._request_base_map_render(lat, lon, max(map_constants.MIN_ZOOM_LEVEL, zoom)) \ No newline at end of file diff --git a/todo.md b/todo.md index aa47e4f..fc7c3ef 100644 --- a/todo.md +++ b/todo.md @@ -1,91 +1,15 @@ -Perfetto, ora ho capito esattamente cosa intendi e hai assolutamente ragione. La mia proposta precedente era troppo semplicistica e non teneva conto del rate-limiting dell'API in un ciclo di download potenzialmente lungo. La tua osservazione è corretta e fondamentale per la robustezza della funzione. -Mi scuso per l'incomprensione. La tua spiegazione è chiarissima. Riformuliamo il concetto e il piano, integrando correttamente i due parametri. +# TODOs +# owner: team-ris +# conventions: - use tags #tag, owner @user, prio:, est: