// Fabrication de la MAP leaflet
// bien comprendre cet exemple pour pouvoir accéder à l'objet map dans les autres chuncks, c'est franchement pas intuitif comme syntaxe
// https://observablehq.com/@mbostock/mapbox-fly-to
viewof map = {
// You'll often see Leaflet examples initializing a map like L.map('map'),
// which tells the library to look for a div with the id 'map' on the page.
// In Observable, we instead create a div from scratch in this cell, so it's
// completely self-contained.
// const container = DOM.element('div', { style: `width:${width*90/100}px;height:${width/1.6}px` });
const container = DOM.element('div', { style: `height:70vh;` });
let resolve;
container.value = new Promise(_ => resolve = _);
// Note that I'm yielding the container pretty early here: this allows the
// div to be placed on the page. This is important, because Leaflet uses
// the div's .offsetWidth and .offsetHeight to size the map. If I were
// to only return the container at the end of this method, Leaflet might
// get the wrong idea about the map's size.
yield container;
// Now we create a map object and add a layer to it.
const map = L.map(container);
map.setView([46.827638, 2.203749], 6);
// Ajouter OSM par défaut
osm.addTo(map);
//_sites.addTo(map);
_communes.addTo(map);
map.addLayer(_markers);
// Contrôle des couches
const baseMaps = {
"OpenStreetMap": osm,
"Orthophotos": ortho
};
const overlayMaps = {
//"sites": _sites,
"sites": _markers,
"communes": _communes
};
const layerControl = L.control.layers(baseMaps, overlayMaps).addTo(map);
resolve(map); // Expose the Map instance as the view’s value.
invalidation.then(() => map.remove()); // faire un ménage propre si le chunck est recalculé
}
//console.log(viewof map);
//console.log(map);md`
### **${mySite.nom}** (mis en service en ${mySite["Date de construction / Année de mise en service"]})
*[TODO : Description de l’équipement par le Cerema (“analyse”) ]*
**Utilisation du site pendant les Jeux** : ${mySite["sites_olymp"]}
**Épreuves ou sports accueillis**:
`{
if (mySite["Olympique"]){
return md` **Olympique** : ${mySite["Olympique"]} `
}else{return md``}
}{
if (mySite["Paralympique"]){
return md` **Paralympique** : ${mySite["Paralympique"]} `
}else{return md``}
}{
if (mySite["Pérennité des interventions réalisées pour les JOP"]){
return md`**Pérennité** des interventions réalisées pour les JOP : ${mySite["Pérennité des interventions réalisées pour les JOP"]} `
}else{return md``}
}{
if (mySite["Intervention / Travaux d'accessibilité sur l'ERP"]){
return md`Intervention / Travaux d'accessibilité sur l'**ERP** : ${mySite["Intervention / Travaux d'accessibilité sur l'ERP"]} `
}else{return md``}
}mySitelong = aq.from([mySite])
.select("Abords immédiats, cheminement extérieur propre au site",
"Stationnement pour public PMR propre au site",
"Entrée principale",
"Zone d'accueil",
"Rampe",
"Ascenseur",
"Élévateur",
"Places spectateurs UFR",
"Places spectateurs faciles d'accès",
"Sanitaires",
"Vestiaires",
"Terrain de sport / Bassin",
"Signalétique propre au site")
.fold(aq.all())
.filter(d => d.value=='Oui')
.select('key')
.rename({key:"Travaux ERP effectués"})
Inputs.table(mySitelong){
if (mySite["url_acces_libre"]){
return html`
<a href=${mySite["url_acces_libre"]} target="_blank">
Prendre connaissance des données disponibles sur AccesLibre
</a>
`
}else{return md``}
}{
if (mySite["Url_data_es (tableau)"]){
return html`
<a href=${mySite["Url_data_es (tableau)"]} target="_blank">
Prendre connaissance des données disponibles sur dataES (base nationale des équipements sportifs)
</a>
`
}else{return md``}
}{
if (mySite["lien_solideo"]){
return html`
<a href=${mySite["lien_solideo"]} target="_blank">
+ d'infos sur le site de la société de livraison des ouvrages olympiques (SOLIDEO)
</a>
`
}else{return md``}
}{
if (mySite["lien_paris_2024"]){
return html`
<a href=${mySite["lien_paris_2024"]} target="_blank">
+ d'infos sur le site PARIS 2024
</a>
`
}else{return md``}
}siteMaskGeo = bertin.properties.filter({
geojson: sites_mask,
expression: `fid == ${mySite.fid}`
})
bertin.draw({
params: { projection:"Mercator", margin: 50, width: 500},
layers: [
{
type: "layer",
geojson: siteMaskGeo,
tooltip: ["$fid","$nom"],
fillOpacity: 0
},
/*{
type:"tiles",
style:"openstreetmap",
clip: siteMaskGeo
},*/
{
type: "tiles",
opacity: 1,
zoomDelta: 2,
style: "worldimagery",
clip: siteMaskGeo
},
{ type: "shadow", geojson: siteMaskGeo, dx: 5, dy: 5 }
]
})