From 955a526b8859eb4da3d1d7f9cec26a49b449b7d8 Mon Sep 17 00:00:00 2001 From: Gabriel Dehame Date: Tue, 21 Feb 2023 17:39:25 +0100 Subject: [PATCH] Utilisation de l'api pour le tracage de la map --- src/App.js | 2 +- src/Map.js | 50 +++++++++++++++++++++++++++++--------------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/App.js b/src/App.js index dd7abfe..9a34e1e 100644 --- a/src/App.js +++ b/src/App.js @@ -91,7 +91,7 @@ export default function App() { return <>
- +
diff --git a/src/Map.js b/src/Map.js index bfcc5a8..fbc93b6 100644 --- a/src/Map.js +++ b/src/Map.js @@ -5,13 +5,12 @@ import { Polygon } from 'react-leaflet/Polygon'; import { LayersControl } from 'react-leaflet/LayersControl' import { LayerGroup } from 'react-leaflet/LayerGroup' import { Tooltip } from 'react-leaflet/Tooltip' -import { useState } from "react"; +import { useState, useEffect } from "react"; import React from 'react'; import L from 'leaflet'; import stairs from "./stairs.png"; import lift from "./lift.png"; import toilet from "./toilet.png" -import request from "./test.json" import { useMapEvent, useMap } from 'react-leaflet/hooks'; function Stairs({position, size, body}) @@ -146,8 +145,7 @@ function newPolygon(element, positions, selectedRoom, callback) // Auxiliary function to return the appropriate polygon depending // on wether it is a room, a lift, a staircase or toilets const color = selectedRoom === element["id"] ? 'red' : 'grey'; - //if (element["type"] === "S") - if (element["id"] === 512 || element["id"] === 517 || element["id"] === 514 || element["id"] === 518) + if (element["type"] === "S") { // In this case, the room is a staircase so we add a Stairs component return callback(element["id"])}}> @@ -164,8 +162,7 @@ function newPolygon(element, positions, selectedRoom, callback) /> } - //else if (element["type"] === "L") - else if (element["id"] === 524 || element["id"] === 523) + else if (element["type"] === "L") { // In this case the room is a lift so we add a Lift component return callback(element["id"])}}> @@ -182,8 +179,7 @@ function newPolygon(element, positions, selectedRoom, callback) /> } - //else if (element["type"] === "T") - else if (element["id"] === 379) + else if (element["type"] === "T") { return callback(element["id"])}}> {element["id"]} @@ -214,8 +210,6 @@ function list_polygons(request, center, callback, selectedRoom) // Taking the request as parameter, the center of the points of the request // and a callback (callback) to interact with the global web interface // when a room is clicked (allowing the display of room informations) - - console.log(selectedRoom); let polygons = []; for (const ind in request) { @@ -246,21 +240,35 @@ function buildPols(request, callback, selectedRoom) return polygons; } -function Map({ callbackRoomSelected, selectedRoom }) +function Map({callbackRoomSelected, selectedRoom, floorID}) { // When the user selects a room on the map, call callbackRoomSelected. // The room that is currently selected is selectedRoom. It is null if no room // is selected - console.log(request); - console.log(selectedRoom); - const createPolygons = React.useCallback((request, callbackRoomSelected, selectedRoom) => { - return buildPols(request, callbackRoomSelected, selectedRoom); - }, [request, callbackRoomSelected, selectedRoom]); - - const polygons = createPolygons(request, callbackRoomSelected, selectedRoom); - return - {polygons} - + const [loading, setLoading] = useState(true); + const [floor, setFloor] = useState(null); + useEffect(() => + { + fetch("https://encartes.aliens-lyon.fr/api/map/get_floor/"+floorID).then(response => response.json()).then(data => {setLoading(false); setFloor(data)}); + }, []); + if (loading) + { + return + + } + else + { + const request = floor["places"]; + /*const createPolygons = React.useCallback((request, callbackRoomSelected, selectedRoom) => { + return buildPols(request, callbackRoomSelected, selectedRoom); + }, [request, callbackRoomSelected, selectedRoom]); + const polygons = createPolygons(request, callbackRoomSelected, selectedRoom); + */ + const polygons = buildPols(request, callbackRoomSelected, selectedRoom); + return + {polygons} + + } } export default Map;