Gestion des plans (GeoJSON)¶
Cette section couvre le stockage, l'affichage et l'édition des plans 2D basés sur GeoJSON.
Stockage¶
- Chaque logement enregistre son plan dans
saves/housing_<id>.json. createGeoJson()produit uneFeatureCollectionvide avec métadonnées.importGeoJson(path)lit ou initialise le fichier,exportGeoJson(path, geojson)persiste les modifications.GeojsonFeatureCollection/Room(utils/geojson/geojson_model.dart) encapsulent validation et manipulation.
Génération et édition¶
- Primitives :
createRoomFeature,createHeaterFeature,createWindowFeature,createDoorFeature,createRestrictedZone. insertRoom()ajoute une pièce rectangulaire en incrémentantroom_id_A.getWalls()extrait les segments pour les calculs (murs et polygones de pièces).
Conversion et affichage¶
geojson_to_matrix.dartconvertit en matrice, remplit les trous (fillGaps), dessine murs et heatmap.widgets/room_painter.dartaffiche le plan filtré par étage viaCustomPaint.widgets/heat_map_painter.dartrend les matrices de chaleur et la position des radiateurs.
Flux d'édition (EditHousePlan)¶
- Charger le GeoJSON du logement courant, filtrer par étage (
GeoJsonFilter.filterByFloor), afficher viaRoomPainter. - Calculer des boutons overlay (
OverlayButtonsCalculator) selon le mode (ajout, suppression, extension). - Router les clics vers
RoomOperations:extendRoom,createAdjacentRoom,deleteRoom. - Sauvegarder : translation vers des coordonnées positives puis
exportGeoJson.
Orientation et étages¶
Compassdéfinit l'orientation nord du plan.currentFloorNotifierpilote l'étage affiché;addFloorToGeoJsonajoute un étage et enregistre le GeoJSON.