fit map bug behoben fuer plan modus
This commit is contained in:
@@ -25,22 +25,34 @@ final mapControllerProvider = Provider<MapController>((ref) {
|
||||
return controller;
|
||||
});
|
||||
|
||||
/// Zentriert die Karte auf die Bounding-Box der uebergebenen Wegpunkte
|
||||
/// (Doku 3.6, analog fitToWaypoints() im HTML-Demonstrator) - geteilt
|
||||
/// zwischen dem manuellen Fit-Button (MapSearchControls) und den
|
||||
/// map-bezogenen Warnungs-Aktionen (Doku 3.10), damit beide Stellen exakt
|
||||
/// dieselbe Zoom-/Padding-Logik verwenden.
|
||||
void fitMapToWaypoints(WidgetRef ref, List<Waypoint> waypoints) {
|
||||
/// Zentriert [controller] auf die Bounding-Box der uebergebenen Wegpunkte
|
||||
/// (Doku 3.6, analog fitToWaypoints() im HTML-Demonstrator). Nimmt bewusst
|
||||
/// direkt den [MapController] statt eines Ref/WidgetRef entgegen, damit
|
||||
/// diese eine Implementierung sowohl aus Widgets (ueber [fitMapToWaypoints]
|
||||
/// unten) als auch aus Notifiern (CurrentMissionMetaNotifier.
|
||||
/// _fitMapToWaypoints, WidgetRef und Notifier-Ref sind unterschiedliche,
|
||||
/// nicht austauschbare Typen) aufgerufen werden kann - vorher gab es hier
|
||||
/// zwei unabhaengige Kopien der Padding-Logik, die bereits einmal
|
||||
/// auseinandergelaufen sind (Fit-Button symmetrisch, automatisches Fit beim
|
||||
/// Missions-Laden noch mit alter Fusszeilen-Aussparung).
|
||||
void fitMapControllerToWaypoints(MapController controller, List<Waypoint> waypoints) {
|
||||
if (waypoints.isEmpty) return;
|
||||
final points = [for (final w in waypoints) LatLng(w.lat, w.lon)];
|
||||
ref.read(mapControllerProvider).fitCamera(
|
||||
CameraFit.bounds(
|
||||
bounds: LatLngBounds.fromPoints(points),
|
||||
// Symmetrisch statt vorher unten 140 (Reservierung fuer die
|
||||
// Fusszeile) - der Fit soll den ganzen Bildschirm ausnutzen statt
|
||||
// dort unnoetig herauszuzoomen (Doku: "Fusszeile wird ausgespart,
|
||||
// nicht genutzt").
|
||||
padding: const EdgeInsets.all(50),
|
||||
),
|
||||
);
|
||||
controller.fitCamera(
|
||||
CameraFit.bounds(
|
||||
bounds: LatLngBounds.fromPoints(points),
|
||||
// Symmetrisch statt vorher unten 140 (Reservierung fuer die
|
||||
// Fusszeile) - der Fit soll den ganzen Bildschirm ausnutzen statt
|
||||
// dort unnoetig herauszuzoomen (Doku: "Fusszeile wird ausgespart,
|
||||
// nicht genutzt").
|
||||
padding: const EdgeInsets.all(50),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/// Bequemlichkeits-Wrapper fuer Aufrufer aus Widgets (Consumer/
|
||||
/// ConsumerStatefulWidget mit [WidgetRef]) - geteilt zwischen dem manuellen
|
||||
/// Fit-Button (MapSearchControls/FlyMapControls) und den map-bezogenen
|
||||
/// Warnungs-Aktionen (Doku 3.10).
|
||||
void fitMapToWaypoints(WidgetRef ref, List<Waypoint> waypoints) =>
|
||||
fitMapControllerToWaypoints(ref.read(mapControllerProvider), waypoints);
|
||||
|
||||
Reference in New Issue
Block a user