Madrid Chamartín Clara Campoamor

La estación de Madrid Chamartín Clara Campoamor culminará su transformación en un referente de la movilidad sostenible, multimodal, conectada e integrada con el proyecto Chamartín Ecosistema Abierto.
Conoce el proyecto de transformaicón de Madrid-Chamartín-Clara Campoamor.
-
sábado 25/07/2026
-
Hora actual - 10:16 h
-
Estado de la Red
Salidas
| Hora de salida | Destino | Línea | Vía |
|---|
No se ha podido recuperar información de circulación.
Llegadas
| Hora de llegada | Origen | Línea | Vía |
|---|---|---|---|
|
4 min
|
C4b |
||
|
4 min
|
C10 |
||
|
6 min
|
C3 |
||
|
10:26
|
C4 |
||
|
10:27
|
C7 |
||
|
10:27
|
C1 |
||
|
10:28
|
C4a |
||
|
10:29
|
C7 |
||
|
10:32
|
C4 |
||
|
10:34
|
C10 |
||
|
10:35
|
C4b |
||
|
10:41
|
C8 |
||
|
10:42
|
C1 |
||
|
10:43
|
C8a |
||
|
10:44
|
C4 |
||
|
10:45
|
C4a |
||
|
10:49
|
C3 |
||
|
10:49
|
C10 |
||
|
10:52
|
C7 |
||
|
10:55
|
C4b |
||
|
10:57
|
C1 |
||
|
10:59
|
C7 |
||
|
11:01
|
C4 |
||
|
11:04
|
C10 |
||
|
11:05
|
C4a |
No se ha podido recuperar información de circulación.
Informacion de la estación
-
Dirección
C/Agustin de Foxa, s/n --- 28036 --- Madrid -- MADRID
-
Horario
Diario: 04:30 a 00:30
Intermodalidad
Número de parada 25.505.163
Líneas urbanas (EMT)
5: Sol - Sevilla
27: Embajadores
66: Fuencarral
67: Plaza Castilla
124: Lacoma
129: Plaza Castilla
134: Montecarmelo
135: Hospital Ramón y Cajal
147: Barrio del Pilar
154: Plaza de Castilla
174: Valdebebas
178: Montecarmelo
N24: Las TablasLíneas
1 Pinar de Chamartín / Valdecarros
10 Hospital Infanta Sofia / Puerta del SurC1 Chamartín / Aeropuerto T4
C2 Guadalajara / Chamartín
C3 Aranjuez / Chamartín
C4a Parla / Alcobendas-San Sebastián de los Reyes
C4b Parla / Colmenar Viejo
C7 Alcalá de Henares / Príncipe Pío
C8a Guadalajara / Santa María de la Alameda
C8b Guadalajara / Cercedilla
C10 Villalba / Chamartín
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.descripcionServicios.getSiblings()[idx] [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" at line 62, column 36]
----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign item = {"id": idNodo.getData(... [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" in macro "listPaint" at line 59, column 17]
- Reached through: @listPaint servicios.id.getSiblings()... [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" at line 39, column 5]
----
1<script type="text/javascript">
2
3
4function cierraDetalles(){
5 var detalles = $("div[id^='detalleServicio']");
6 var iconos = $("[id^='button-detalleServicio']");
7 for (let detalle of detalles) {
8 detalle.style.display = 'none'
9 }
10 for (let icono of iconos) {
11 icono.setAttribute('aria-expanded', 'false');
12 }
13}
14
15 function toggle(id, id2) {
16
17
18 var n = document.getElementById(id);
19if (n.style.display != 'none')
20 {
21 n.style.display = 'none';
22 document.getElementById(id2).setAttribute('aria-expanded', 'false');
23 }
24 else
25 {
26 cierraDetalles();
27 n.style.display = '';
28 document.getElementById(id2).setAttribute('aria-expanded', 'true');
29 }
30 }
31
32
33 </script>
34
35<#if servicios?? && servicios.id?? && servicios.id.getSiblings()?has_content>
36 <div class="title-servicios">
37 <h3><@liferay.language key="es.adif.estacion.servicios"/></h3>
38 </div>
39 <@listPaint servicios.id.getSiblings() ""/>
40</#if>
41
42<#if serviciosAdaptados?? && serviciosAdaptados.idAdaptados?? && serviciosAdaptados.idAdaptados.getSiblings()?has_content>
43 <div class="title-servicios">
44 <h3><@liferay.language key="es.adif.estacion.servicios-adaptados"/></h3>
45 </div>
46 <@listPaint serviciosAdaptados.idAdaptados.getSiblings() "Adaptados"/>
47</#if>
48
49<#macro listPaint listaIds texto>
50 <#-- 1. Creamos una lista limpia combinando los datos por su índice -->
51 <#assign listaTipada = [] />
52
53 <#list listaIds as idNodo>
54 <#assign idx = idNodo?index />
55
56 <#if texto != "Adaptados">
57 <#-- Acceso seguro navegando la estructura exacta del XML usando las variables de Liferay -->
58 <#if .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.titulo.getSiblings()[idx]??>
59 <#assign item = {
60 "id": idNodo.getData(),
61 "titulo": .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.titulo.getSiblings()[idx].getData(),
62 "descripcion": .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.descripcionServicios.getSiblings()[idx].getData(),
63 "icono": .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.icono.getSiblings()[idx].getData(),
64 "pop": .vars["serviciosFieldSet"].idFieldSet.idFieldSetFieldSet.popServicios.getSiblings()[idx].getData()
65 } />
66 <#assign listaTipada = listaTipada + [item] />
67 </#if>
68 <#else>
69 <#-- Ruta exacta para los servicios adaptados -->
70 <#if .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.tituloAdaptados.getSiblings()[idx]??>
71 <#assign item = {
72 "id": idNodo.getData(),
73 "titulo": .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.tituloAdaptados.getSiblings()[idx].getData(),
74 "descripcion": .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.descripcionAdaptados.getSiblings()[idx].getData(),
75 "icono": .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.iconoAdaptados.getSiblings()[idx].getData(),
76 "pop": .vars["serviciosAdaptadosFieldSet"].idAdaptadosFieldSet.idAdaptadosFieldSetFieldSet.popAdaptados.getSiblings()[idx].getData()
77 } />
78 <#assign listaTipada = listaTipada + [item] />
79 </#if>
80 </#if>
81 </#list>
82
83 <#-- 2. Ordenamos nativamente por el título de los mapas creados -->
84 <#if listaTipada?has_content>
85 <#assign listaOrdenada = listaTipada?sort_by("titulo") />
86
87 <#-- 3. Pintamos en filas de 3 usando la lista ya ordenada -->
88 <#list listaOrdenada as cur_item>
89 <#if cur_item?index % 3 == 0>
90 <#assign
91 hay1 = listaOrdenada[cur_item?index + 1]??
92 hay2 = listaOrdenada[cur_item?index + 2]??
93 />
94 <div class="servicios-estacion" id="servicios-estacion">
95 <@boxPaint cur_item cur_item?index texto/>
96 <#if hay1>
97 <@boxPaint listaOrdenada[cur_item?index + 1] cur_item?index + 1 texto/>
98 <#if hay2>
99 <@boxPaint listaOrdenada[cur_item?index + 2] cur_item?index + 2 texto/>
100 </#if>
101 </#if>
102 </div>
103 <@detailPaint cur_item cur_item?index texto/>
104 <#if hay1>
105 <@detailPaint listaOrdenada[cur_item?index + 1] cur_item?index + 1 texto/>
106 <#if hay2>
107 <@detailPaint listaOrdenada[cur_item?index + 2] cur_item?index + 2 texto/>
108 </#if>
109 </#if>
110 </#if>
111 </#list>
112 </#if>
113</#macro>
114
115<#macro boxPaint elem index texto>
116 <#if elem.pop ?? && elem.pop != "">
117 <button class="linkServiciosDesp" id="button-detalleServicio${texto}-${index}" aria-expanded="false" aria-controls="detalleServicio${texto}-${index}" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">
118 </#if>
119 <div class="servicio-estacion" id="iconoServicio${texto}-${index}">
120 <div class="servicio-estacion-icono" style="background-image:url('${elem.icono}')"></div>
121 <div class="servicio-estacion-datos">
122 <h4>${elem.titulo}</h4>
123 <p class="descripcion-servicios">${elem.descripcion}</p>
124 <#if elem.pop ?? && elem.pop != "">
125 <p class="detalle-mas-informacion">
126 <span class="texto_servicios_responsive" data-desktoptext="Más información" data-phonetext="+"></span>
127 </p>
128 </#if>
129 </div>
130 </div>
131 <#if elem.pop ?? && elem.pop != "">
132 </button>
133 </#if>
134</#macro>
135
136<#macro detailPaint elem index texto>
137 <div role="region" aria-labelledby="button-detalleServicio${texto}-${index}" class="servicios-estacion" id="detalleServicio${texto}-${index}" style="display:none">
138 <div class="servicio-estacion servicio-estacion-detalle servicio-estacion-detalle-${index%3} ">
139 <div class="servicio-estacion-icono" style="background-image:url('${elem.icono}')"></div>
140 <div class="servicio-estacion-datos">
141 <h4>${elem.titulo}</h4>
142 ${elem.pop}
143 <p>
144 <button aria-label="<@liferay.language key="navigation.cerrar" /> ${elem.titulo}" class="btn-close-adif" type="button" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">×</button>
145 </p>
146 </div>
147 </div>
148 </div>
149</#macro>
150
151
152
153<#function esMayor string1 string2>
154 <#assign strings = [string1,string2]?sort>
155 <#return strings[0]==string2>
156</#function>
Rolling
Número de local: 91
Navelgas
Número de local: 38
café de La estación
Número de local: 70
Coffee and Bakery
Número de local: 00
Dolcemania
Número de local: 00
Farine
Número de local: 00
Máquinas vending
Número de local: 76A, 76B ... 76L
MEEU
Número de local: 49 y 72
Espacio Chamartín The One
Número de local: 48
Relay
Número de local: 00
Sixt
Número de local: 44

