import { MapContainer, TileLayer, Circle, Popup } from 'react-leaflet'; import PropTypes from 'prop-types'; import { useConfig } from '../contexts/ConfigContext.jsx'; import { DataProvider } from '../contexts/DataContext.jsx'; import { useData } from '../contexts/DataContext.jsx'; /** * PollutionMap.jsx * * Este archivo define el componente PollutionMap, que muestra un mapa con los niveles de contaminación en diferentes ubicaciones. * * Importaciones: * - MapContainer, TileLayer, Circle, Popup: Componentes de react-leaflet para renderizar el mapa y los círculos de contaminación. * - useConfig: Hook personalizado para acceder al contexto de configuración. * - DataProvider, useData: Funciones del contexto de datos para obtener y manejar datos. * * Funcionalidad: * - PollutionMap: Componente que configura la solicitud de datos y utiliza el DataProvider para obtener datos de sensores. * - Muestra mensajes de carga y error según el estado de la configuración. * - PollutionMapContent: Componente que procesa los datos obtenidos y renderiza los círculos de contaminación en el mapa. * - Utiliza el hook `useData` para acceder a los datos de sensores. * - Renderiza círculos de diferentes colores y tamaños según el nivel de contaminación. * */ const PollutionCircles = ({ data }) => { return data.map(({ lat, lng, level }, index) => { const baseColor = level < 20 ? '#00FF85' : level < 60 ? '#FFA500' : '#FF0000'; const steps = 4; const maxRadius = 400; const stepSize = maxRadius / steps; return (
Cargando configuración...
; if (configError) returnError al cargar configuración: {configError}
; if (!config) returnConfiguración no disponible.
; const BASE = config.appConfig.endpoints.LOGIC_URL; const ENDPOINT = config.appConfig.endpoints.GET_DEVICE_POLLUTION_MAP; let endp = ENDPOINT.replace('{0}', deviceId); const reqConfig = { baseUrl: `${BASE}/${endp}`, params: {} } return (Cargando configuración...
; if (configError) returnError al cargar configuración: {configError}
; if (!config) returnConfiguración no disponible.
; if (dataLoading) returnCargando datos...
; if (dataError) returnError al cargar datos: {configError}
; if (!data) returnDatos no disponibles.
; const SEVILLA = config?.userConfig.city; const pollutionData = data.map((measure) => ({ lat: measure.lat, lng: measure.lon, level: measure.carbonMonoxide })); return (