4b707342f41c8e752b2ef79eca930b14eda0916e
[lhc/web/spip_carte_de_sites.git] / contenu / page-carte_de_sites.html
1 [(#REM)
2 Modele carte_de_site
3
4 Parametres :
5 - legende = oui : afficher ou ne pas afficher la légende
6 - lat = 46.8 : latitude du centre de la carte
7 - lon = 2.52 : longitude du centre de la carte
8 - zoom = 5 : niveau de zoom (pour repère: 1 = la carte du monde; 15 = quartier)
9 - larg = 100% : largeur de la carte en pixel ou en pourcentage
10 - haut = 400 : hauteur de la carte en pixel ou en pourcentage
11 - style = 14189 : style de carte. Voir http://maps.cloudmade.com/editor . Si vous mettez en place une super carte pour les cyclistes, on est preneur.
12 - boite = oui : afficher ou pas la boite avec calques et types
13 - popup = oui : afficher ou pas les popups de description des ateliers
14 - images = oui : afficher ou pas les images (logo, photo de l'atelier)
15 - lien = oui : Lien automatique vers la grande carte
16 - iframe = oui : Afficher ou non le lien vers le code iframe
17 - loc = non : Afficher ou non le popup de localisation
18 - champ_lat : Prend l'identifiant d'une balise html en argument. Change la valeur (value) de cette balise par la latitude cliquee
19 - champ_lon : Prend l'identifiant d'une balise html en argument. Change la valeur (value) de cette balise par la longitude cliquee
20 ]
21
22 <!-- Carte -->
23
24 <div id="map" style="[(#ENV{larg}|oui) width: [(#ENV{larg}|sinon{'540'})px;]] height: [(#ENV{haut}|sinon{'400'})]px">
25
26 <script src="[(#CHEMIN{lib/leaflet-gis-4.1.13/dist/leaflet.js}|url_absolue)]" type="text/javascript"></script>
27 <script src="[(#CHEMIN{lib/leaflet-gis-4.1.13/plugins/control/Control.FullScreen.js}|url_absolue)]" type="text/javascript"></script>
28
29
30 <script>
31 <BOUCLE_mots_types(MOTS){type = (#ENV{groupe})}>
32 var group_#ID_MOT = new L.LayerGroup();
33 var templateIcon = L.Icon.extend({
34 options: {
35 iconUrl: '[(#LOGO_MOT||extraire_attribut{src}|url_absolue)]',
36 shadowUrl: '[(#LOGO_MOT_SURVOL||extraire_attribut{src}|url_absolue)]',
37 iconSize: new L.Point(17, 28),
38 shadowSize: new L.Point(17, 17),
39 iconAnchor: new L.Point(13, 17),
40 popupAnchor: new L.Point(0, -33)
41 }
42 });
43 gisIcon = new templateIcon()
44 <BOUCLE_sites(SITES){id_mot}>
45 <BOUCLE_coord(GIS){id_syndic}>
46 var markerGis = new L.Marker(new L.LatLng(#LAT, #LON), {icon: gisIcon});
47 [(#ENV{popup}|!={non}|oui)
48 markerGis.bindPopup("[(#ENV{images}|!={non}|oui)<span style='float: left; width: 45px;'><img src='[(#LOGO_SYNDIC||extraire_attribut{src}|url_absolue)]' alt='' style='width: 45px;' width='45'></span>]<h4>#TITRE</h4>#DESCRIPTIF[(#ENV{images}|!={non}|oui)<span class='spip_documents spip_documents_right' style='float: right; width: 100px;'>\<img src='[(#LOGO_SYNDIC_SURVOL||extraire_attribut{src}|url_absolue)]' alt='' style='width: 100px;' width='100'></span>]#ADRESSE<br/> #CODE_POSTAL #VILLE<br/><a href='#URL_SITE' target='_blank'>#NOM_SITE - #URL_SITE</a><br/><br/><em>Statut: [(#_mots_types:TITRE|supprimer_numero)]</em>");
49 ]
50 group_#ID_MOT.addLayer(markerGis)
51 </BOUCLE_coord>
52 </BOUCLE_sites>
53 </BOUCLE_mots_types>
54
55 var cloudmadeAttribution = 'Map data &copy; OpenStreetMap contributors<br/>[(#ENV{lien}|!={non}|oui)(<a href="#URL_SITE_SPIP/?page=carte_de_sites_plein&lien=non&groupe=#ENV{groupe}&boite=oui&haut=400[&lat=(#ENV{lat})][&lon=(#ENV{lon})][&zoom=(#ENV{zoom})][&legende=(#ENV{legende})]" rel="external" target="_blank"><:carte_de_sites:grande_carte:></a>)]',
56 cloudmadeUrl = 'http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/{styleId}/256/{z}/{x}/{y}.png';
57
58 var midnightCommander = new L.TileLayer(cloudmadeUrl, {styleId: 999, attribution: cloudmadeAttribution}),
59 thunderforest = new L.TileLayer('http://{s}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png', {attribution: cloudmadeAttribution}),
60 minimal = new L.TileLayer(cloudmadeUrl, {styleId: [(#ENV{style}|sinon{'14189'})], attribution: cloudmadeAttribution});
61
62 //Construction de la carte
63 var map = new L.Map('map');
64 map.setView(new L.LatLng([(#ENV{lat}|sinon{'46.8'})],[(#ENV{lon}|sinon{'2.52'})]),[(#ENV{zoom}|sinon{5})]).addLayer(thunderforest);
65 map.addControl(new L.Control.FullScreen());
66
67 //Ajout des marqueurs
68 <BOUCLE_map(MOTS){type = (#ENV{groupe})}{!par num titre}>
69 map.addLayer(group_#ID_MOT);
70 </BOUCLE_map>
71
72 [(#ENV{boite}|!={non}|oui)
73 <INCLURE{fond=inclure/boite}{env}>
74 ]
75
76 [(#ENV{loc}|!={oui}|non)
77 map.on('click', onMapClick);
78
79 var popup = new L.Popup();
80
81 function onMapClick(e) {
82 document.getElementById("#ENV{champ_lat}").value=e.latlng.lat.toFixed(18);
83 document.getElementById("#ENV{champ_lon}").value=e.latlng.lng.toFixed(18);
84 popup.setLatLng(e.latlng);
85 popup.setContent("<:carte_de_sites:coordonnees_clic:>");
86 map.openPopup(popup);
87 }
88 ]
89
90 </script>
91 </div>
92
93 [(#ENV{iframe}|!={non}|oui)
94 <INCLURE{fond=inclure/iframe_carte}{ajax}{env}>
95 ]
96
97 <B_legende>
98 <!-- Legende -->
99 [(#ENV{legende}|!={non}|oui)
100 <h2 class='h2 spip'><:carte_de_sites:legende:></h2>
101 ]
102 <BOUCLE_legende(MOTS){type = (#ENV{groupe})}{par num titre}>
103 [(#ENV{legende}|!={non}|oui)
104 <p>#LOGO_MOT_NORMAL [(#TITRE|supprimer_numero)]</p>
105 ]
106 </BOUCLE_legende>
107 </B_legende>