source: spip-zone/_plugins_/gis/trunk/modeles/carte_gis.html @ 65370

Last change on this file since 65370 was 65370, checked in by brunobergot@…, 9 years ago

version 4.1.5 : ajout d'un paramètre centrer_fichier = non qui permet de ne pas centrer la carte automatiquement sur les fichiers kml/gpx surperposés

File size: 8.7 KB
Line 
1[(#REM)
2
3        Modele carte_gis
4
5        Parametres :
6
7        - id_map|id_carte_gis = 1               id de la carte
8        - lat|latit|latitude = 48.3             latitude du centre de la carte
9        - lon|lonxit|longitude = -4.7   longitude du centre de la carte
10        - zoom = 5                                              zoom de la carte
11        - sw_lat = lat - 10°                    latitude du sud-ouest de la bounding box
12        - sw_lon = lon - 10°                    longitude du sud-ouest de la bounding box
13        - ne_lat = lat + 10°                    latitude du nord-est de la bounding box
14        - ne_lon = lon + 10°                    longitude du nord-est de la bounding box
15        - width|largeur = 100%                  largeur de la carte, 100% par defaut
16        - height|hauteur = 400px                hauteur de la carte, 400px par defaut
17        - style = non                                   ne pas styler la carte
18        - zoom_molette|zoom_wheel = non désactiver le zoom avec la molette de la souris, actif par defaut
19        - fullscreen = oui                              afficher un bouton pour passer la carte en plein écran
20        - control_type|controle_type = non                      ne pas afficher les controles de changement de type
21        - no_control|aucun_controle = oui                               ne pas afficher les controles de la carte
22        - scale = oui                                   afficher l'échelle de la carte
23        - limit|limite = 500                                    nombre max de marqueurs à afficher, 500 par defaut
24        - objets = gis                                  type d'objets à afficher (fichier json/gis_xx qui génère la source de donnees)
25        - autocenterandzoom|centrer_auto = oui          centrer et zoomer la carte automatiquement pour afficher tous les marqueurs
26        - kml = 12                                              kml à superposer à la carte (id_document ou url)
27        - gpx = 12                                              gpx à superposer à la carte (id_document ou url)
28        - centrer_fichier = non                 permet de ne pas centrer la carte automatiquement sur les fichiers kml/gpx surperposés
29        - localize_visitor|localiser_visiteur = oui             centrer la carte sur la position du visiteur (API geolocation HTML5)
30        - point = non                                   si elle vaut "non" cette option n'affichera pas de points du tout (utile pour n'afficher qu'un kml par exemple)
31X       - ajaxload = non                si elle vaut "non" cette option désactive l'init de la carte sur l'event ajaxload
32        - media = non                                                                   permet de passer le critère 'media' (pour les documents)
33
34]
35
36[(#SET{width,#ENV{width,#ENV{largeur,100%}}})]
37[(#SET{height,#ENV{height,#ENV{hauteur,400px}}})]
38[(#SET{id,#ENV{id_carte_gis,#ENV{id_map,#ENV{id,1}}}})]
39[(#REM) -- compat gis v1 -- ]
40[(#SET{lat,#ENV{lat,#ENV{latit,#ENV{latitude,#CONFIG{gis/lat,0}}}}})]
41[(#SET{lon,#ENV{lon,#ENV{lonxit,#ENV{longitude,#CONFIG{gis/lon,0}}}}})]
42[(#REM) On utilise la bounding box seulement si le centre n'a pas été donné et si les quatre valeurs de la bounding box sont renseignées
43    les valeurs par defaut sont "centre +/- 10°", ce qui est naze, mais c'est un cas normalement impossible
44]
45[(#ENV{lat}|ou{#ENV{lon}}|non|et{#ENV{sw_lat}}|et{#ENV{sw_lon}}|et{#ENV{ne_lat}}|et{#ENV{ne_lon}})
46        #SET{utiliser_bb, oui}
47        #SET{sw_lat,#ENV{sw_lat,#GET{lat}|moins{10}}}
48        #SET{sw_lon,#ENV{sw_lon,#GET{lon}|moins{10}}}
49        #SET{ne_lat,#ENV{ne_lat,#GET{lat}|plus{10}}}
50        #SET{ne_lon,#ENV{ne_lon,#GET{lon}|plus{10}}}
51]
52
53<div id="map[(#GET{id})]" class="carte_gis"[(#ENV{style}|!={'non'}|?{' '})style="[width:(#GET{width});][ height:(#GET{height});]"]></div>
54
55<script type="text/javascript">/*<!\[CDATA\[*/
56
57var map[(#GET{id})];
58
59(function($){
60       
61        var init_map[(#GET{id})] = function() {
62                var map_container = 'map[(#GET{id})]';
63               
64                map[(#GET{id})] = new L.Map(map_container,{
65                        scrollWheelZoom: [(#ENV{zoom_molette,#ENV{zoom_wheel}}|=={non}|?{false,true})],
66                        zoomControl: [(#ENV{no_control,#ENV{aucun_controle}}|!={oui}|?{true,false})]   
67                });
68               
69                [(#GET{utiliser_bb}|non)
70                map[(#GET{id})].setView(new L.LatLng([(#GET{lat})], [(#GET{lon})]), [(#ENV{zoom,#CONFIG{gis/zoom,0}})]);]
71               
72                [(#GET{utiliser_bb}|oui)
73                map[(#GET{id})].fitBounds(
74                        new L.LatLngBounds(
75                                new L.LatLng([(#GET{sw_lat})], [(#GET{sw_lon})]),
76                                new L.LatLng([(#GET{ne_lat})], [(#GET{ne_lon})])
77                        )
78                );]
79               
80                //default layer
81                #SET{layer_defaut,#REM|gis_layer_defaut} #SET{layers,#EVAL{$GLOBALS['gis_layers']}}
82                var [(#GET{layer_defaut})] = [new (#GET{layers}|table_valeur{#GET{layer_defaut}/layer})];
83                map[(#GET{id})].addLayer([(#GET{layer_defaut})]);
84               
85                <B_layers>
86                var layers_control = new L.Control.Layers();
87                layers_control.addBaseLayer([(#GET{layer_defaut})],["(#GET{layers}|table_valeur{#GET{layer_defaut}/nom})"]);
88                <BOUCLE_layers(DATA){source table, #GET{layers}}{si #ENV{control_type,#ENV{controle_type}}|!={non}|et{#ENV{no_control,#ENV{aucun_controle}}|!={oui}}|et{#CONFIG{gis/layers,#ARRAY}|count|>{1}|oui}|oui}>[
89                (#CLE|!={#GET{layer_defaut}}|oui|et{#CLE|in_array{#CONFIG{gis/layers,#ARRAY}}|oui}|oui)
90                layers_control.addBaseLayer([new (#VALEUR|table_valeur{layer})],"[(#VALEUR|table_valeur{nom})]");]
91                </BOUCLE_layers>
92                map[(#GET{id})].addControl(layers_control);
93                // classe noajax sur le layer_control pour éviter l'ajout de hidden par SPIP
94                $(layers_control._form).addClass('noajax');
95                </B_layers>
96               
97                map[(#GET{id})].setView(new L.LatLng(#GET{lat},#GET{lon}),#ENV{zoom,#CONFIG{gis/zoom,0}});
98               
99                map[(#GET{id})].attributionControl.setPrefix('');
100               
101                [(#ENV{scale}|et{#ENV{no_control,#ENV{aucun_controle}}|!={oui}}|oui)
102                        map[(#GET{id})].addControl(new L.Control.Scale());
103                ][(#ENV{fullscreen}|et{#ENV{no_control,#ENV{aucun_controle}}|!={oui}}|oui)
104                        map[(#GET{id})].addControl(new L.Control.FullScreen());
105                ]
106
107                [(#ENV{point}|!={non}|oui)
108                jQuery.getJSON("[(#URL_PAGE{gis_json}|url_absolue)]",
109                        {[
110                                objets : "(#ENV{objets,#ENV{class}}|trim)",][
111                                id_rubrique : (#ENV{id_rubrique}|trim),][
112                                id_secteur : (#ENV{id_secteur}|trim),][
113                                id_parent : (#ENV{id_parent}|trim),][
114                                id_article : (#ENV{id_article}|trim),][
115                                id_breve : (#ENV{id_breve}|trim),][
116                                id_document : (#ENV{id_document}|trim),][
117                                media : "(#ENV{media}|trim)",][
118                                id_mot : (#ENV{id_mot}|trim),][
119                                id_groupe : (#ENV{id_groupe}|trim),][
120                                id_auteur : (#ENV{id_auteur}|trim),][
121                                id_syndic : (#ENV{id_syndic}|trim),][
122                                id_forum : (#ENV{id_forum}|trim),][
123                                id_evenement : (#ENV{id_evenement}|trim),][
124                                id_gis : (#ENV{id_gis}|trim),][
125                                recherche : "(#ENV{recherche})",][
126                                mots : (#ENV{mots}|?{[(#ENV{mots}|trim|json_encode)],''}),][
127                                limit : (#ENV{limit,#ENV{limite,500}}|trim)]
128                        },
129                        function(data) {
130                                if (data){
131                                        var geojson = new L.geoJson('', {
132                                                onEachFeature: function (feature, layer) {
133                                                        if (feature.properties && feature.properties.icon){
134                                                                layer.setIcon(new L.Icon({
135                                                                        iconUrl: feature.properties.icon,
136                                                                        iconSize: new L.Point( feature.properties.icon_size\[0\], feature.properties.icon_size\[1\] ),
137                                                                        iconAnchor: new L.Point( feature.properties.icon_anchor\[0\], feature.properties.icon_anchor\[1\] ),
138                                                                }));
139                                                        }
140                                                        if (feature.properties && feature.properties.title){
141                                                                layer.bindPopup(feature.properties.title);
142                                                        }
143                                                }
144                                        }).addTo(map[(#GET{id})]);
145                                        geojson.addData(data);
146                                        [(#ENV{autocenterandzoom,#ENV{centrer_auto}}|oui)
147                                        map[(#GET{id})].fitBounds(geojson.getBounds());]
148                                }
149                        }
150                );]
151               
152                <BOUCLE_test_kml(CONDITION){si (#ENV{kml}|oui)}>
153                        #SET{kml, #ENV{kml}}
154                        [(#GET{kml}|is_array|non) #SET{kml, #ARRAY{0,#GET{kml}}} ]
155                        <BOUCLE_kml(POUR){tableau #GET{kml}}>
156                                [(#VALEUR|intval|oui)
157                                var kml_#COMPTEUR_BOUCLE = new L.KML(['(#VALEUR|generer_url_entite{document}|url_absolue)'], {async: true}); ]
158                                [(#VALEUR|intval|non)
159                                var kml_#COMPTEUR_BOUCLE = new L.KML(['(#VALEUR|copie_locale)'], {async: true}); ]
160                                [(#ENV{centrer_fichier}|!={non}|oui)
161                                kml_#COMPTEUR_BOUCLE.on("loaded", function(e) { map[(#GET{id})].fitBounds(e.target.getBounds()); });]
162                                map[(#GET{id})].addLayer(kml_#COMPTEUR_BOUCLE);
163                        </BOUCLE_kml>
164                </BOUCLE_test_kml>
165                <BOUCLE_test_gpx(CONDITION){si (#ENV{gpx}|oui)}>
166                        #SET{gpx, #ENV{gpx}}
167                        [(#GET{gpx}|is_array|non) #SET{gpx, #ARRAY{0,#GET{gpx}}} ]
168                        <BOUCLE_gpx(POUR){tableau #GET{gpx}}>
169                                [(#VALEUR|intval|oui)
170                                var gpx_#COMPTEUR_BOUCLE = new L.GPX(['(#VALEUR|generer_url_entite{document}|url_absolue)'], {async: true}); ]
171                                [(#VALEUR|intval|non)
172                                var gpx_#COMPTEUR_BOUCLE = new L.GPX(['(#VALEUR|copie_locale)'], {async: true}); ]
173                                [(#ENV{centrer_fichier}|!={non}|oui)
174                                gpx_#COMPTEUR_BOUCLE.on("loaded", function(e) { map[(#GET{id})].fitBounds(e.target.getBounds()); });]
175                                map[(#GET{id})].addLayer(gpx_#COMPTEUR_BOUCLE);
176                        </BOUCLE_gpx>
177                </BOUCLE_test_gpx>
178               
179                [(#ENV{localize_visitor,#ENV{localiser_visiteur}}|oui)
180                map[(#GET{id})].locate({setView: true, maxZoom: [(#ENV{zoom,#CONFIG{gis/zoom,0}})]});]
181               
182        }
183
184        $(function(){
185                jQuery.getScript('[(#PRODUIRE{fond=javascript/gis.js}|compacte)]',function(){
186                        init_map[(#GET{id})]();
187                });
188                //[(#ENV{ajaxload}|!={non}|oui)onAjaxLoad(init_map[(#GET{id})]);]
189        });
190
191})(jQuery);
192/*\]\]>*/
193</script>
Note: See TracBrowser for help on using the repository browser.