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.

 

x
Adif en tu móvil
Horarios en tiempo real
Descárgala ya
Instalar
Filtrar por
 

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
C1
4 min
C4b
5 min
C7
7 min
C7
9 min
C4
23:05
C10
23:05
C3
23:05
C8
23:10
C4
23:12
C1
23:13
C8b
23:17
C8
23:20
C4
23:20
C3
23:22
C7
23:22
C4b
23:26
C7
23:27
C1
23:29
C4
23:30
C2
23:38
C8
23:40
C4
23:40
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

    Taxi
    Número de parada 25.505.163
    Autobús

    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 Tablas
    Metro
    Líneas
    1 Pinar de Chamartín / Valdecarros
    10 Hospital Infanta Sofia / Puerta del Sur
    Cercanías
    C1 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}')">&times;</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>