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 | - type = carte type de la carte : carte, satellite, relief ou hybride |
---|
20 | - control_zoom|controle_zoom = large type de controles pour le zoom : large, small |
---|
21 | - control_pan|controle_pan = non ne pas afficher les controles de déplacement dans la carte |
---|
22 | - control_type|controle_type = non ne pas afficher les controles de changement de type |
---|
23 | - no_control|aucun_controle = oui ne pas afficher les controles de la carte |
---|
24 | - overview = oui afficher un mini carte de situation |
---|
25 | - scale = oui afficher l'échelle de la carte |
---|
26 | - limit|limite = 500 nombre max de marqueurs à afficher, 500 par defaut |
---|
27 | - objets = gis type d'objets à afficher (fichier json/gis_xx qui génère la source de donnees) |
---|
28 | - autocenterandzoom|centrer_auto = oui centrer et zoomer la carte automatiquement pour afficher tous les marqueurs |
---|
29 | - autofocus_marker = oui permet de forcer l'affichage d'une seule infobulle à la fois |
---|
30 | - kml = 12 kml à superposer à la carte (id_document ou url) |
---|
31 | - localize_visitor|localiser_visiteur = oui centrer la carte sur la position du visiteur (API geolocation HTML5) |
---|
32 | - point = non si elle vaut "non" cette option n'affichera pas de points du tout (utile pour n'afficher qu'un kml par exemple) |
---|
33 | - ajaxload = non si elle vaut "non" cette option désactive l'init de la carte sur l'event ajaxload |
---|
34 | |
---|
35 | ] |
---|
36 | |
---|
37 | [(#SET{width,#ENV{width,#ENV{largeur,100%}}})] |
---|
38 | [(#SET{height,#ENV{height,#ENV{hauteur,400px}}})] |
---|
39 | [(#SET{id,#ENV{id_carte_gis,#ENV{id_map,#ENV{id,1}}}})] |
---|
40 | [(#REM) -- compat gis v1 -- ] |
---|
41 | [(#SET{lat,#ENV{lat,#ENV{latit,#ENV{latitude,#CONFIG{gis/lat,0}}}}})] |
---|
42 | [(#SET{lon,#ENV{lon,#ENV{lonxit,#ENV{longitude,#CONFIG{gis/lon,0}}}}})] |
---|
43 | [(#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 |
---|
44 | les valeurs par defaut sont "centre +/- 10°", ce qui est naze, mais c'est un cas normalement impossible |
---|
45 | ] |
---|
46 | [(#ENV{lat}|ou{#ENV{lon}}|non|et{#ENV{sw_lat}}|et{#ENV{sw_lon}}|et{#ENV{ne_lat}}|et{#ENV{ne_lon}}) |
---|
47 | #SET{utiliser_bb, oui} |
---|
48 | #SET{sw_lat,#ENV{sw_lat,#GET{lat}|moins{10}}} |
---|
49 | #SET{sw_lon,#ENV{sw_lon,#GET{lon}|moins{10}}} |
---|
50 | #SET{ne_lat,#ENV{ne_lat,#GET{lat}|plus{10}}} |
---|
51 | #SET{ne_lon,#ENV{ne_lon,#GET{lon}|plus{10}}} |
---|
52 | ] |
---|
53 | [(#REM) |
---|
54 | // todo |
---|
55 | {recursive=#ENV{recursive}} |
---|
56 | {attente=#ENV{attente}} |
---|
57 | {ombre=#ENV{ombre}} |
---|
58 | {load_map=#ENV{load_map}} |
---|
59 | {id_a_ouvrir=#ENV{id_a_ouvrir}} |
---|
60 | {swfobject=#CONFIG{gis/swfobject,oui}} |
---|
61 | |
---|
62 | // pas documentes |
---|
63 | {control_move=#ENV{control_move}} |
---|
64 | {control_zoom=#ENV{control_zoom}} |
---|
65 | |
---|
66 | // done |
---|
67 | |
---|
68 | {latit}{lonxit}{zoom}{hauteur=#GET{height}}{largeur=#GET{width}}{id_carte_gis}{zoom_molette=#ENV{zoom_molette}} |
---|
69 | {control}{control_type=#ENV{control_type}}{type}{limit=#ENV{limit}} |
---|
70 | {id_rubrique=#GET{id_rubrique}}{id_secteur}{id_mot}{id_article}{id_auteur}{recherche}{id_groupe} |
---|
71 | ] |
---|
72 | |
---|
73 | <div id="map[(#GET{id})]" class="carte_gis"[(#ENV{style}|!={'non'}|?{' '})style="[width:(#GET{width});][ height:(#GET{height});]"]></div> |
---|
74 | |
---|
75 | <script type="text/javascript"> |
---|
76 | <!-- |
---|
77 | [(#CONFIG{gis/api}|=={cloudmade}|oui) |
---|
78 | var cloudmade_key = '#CONFIG{gis/api_key_cloudmade}';] |
---|
79 | |
---|
80 | var map[(#GET{id})]; |
---|
81 | |
---|
82 | (function($){ |
---|
83 | |
---|
84 | var init_map[(#GET{id})] = function() { |
---|
85 | var map_container = 'map[(#GET{id})]'; |
---|
86 | |
---|
87 | $('#map[(#GET{id})]').empty(); |
---|
88 | map[(#GET{id})] = new mxn.Mapstraction(map_container,'[(#REM|gis_api_utilisee)]'); |
---|
89 | |
---|
90 | [(#ENV{zoom_molette,#ENV{zoom_wheel}}|!={non}|oui) |
---|
91 | map[(#GET{id})].enableScrollWheelZoom();] |
---|
92 | |
---|
93 | [(#GET{utiliser_bb}|non) |
---|
94 | map[(#GET{id})].setCenterAndZoom(new mxn.LatLonPoint([(#GET{lat})],[(#GET{lon})]),[(#ENV{zoom,#CONFIG{gis/zoom,0}})]); |
---|
95 | ] |
---|
96 | |
---|
97 | [(#GET{utiliser_bb}|oui) |
---|
98 | map[(#GET{id})].setBounds(new mxn.BoundingBox([(#GET{sw_lat})],[(#GET{sw_lon})],[(#GET{ne_lat})],[(#GET{ne_lon})])); |
---|
99 | ] |
---|
100 | |
---|
101 | [(#SET{maptype, #REM|gis_maptype_utilise})] |
---|
102 | [(#ENV{type}|oui) |
---|
103 | [(#ENV{type}|=={'carte'}|oui) #SET{maptype,ROAD} ] |
---|
104 | [(#ENV{type}|=={'satellite'}|oui) #SET{maptype,SATELLITE} ] |
---|
105 | [(#ENV{type}|=={'hybride'}|oui) #SET{maptype,HYBRID} ] |
---|
106 | [(#ENV{type}|=={'relief'}|oui) #SET{maptype,PHYSICAL} ] |
---|
107 | ] |
---|
108 | // Pour l'API Openlayers, la methode n'existe pas |
---|
109 | try { |
---|
110 | map[(#GET{id})].setMapType([mxn.Mapstraction.(#GET{maptype})]); |
---|
111 | } |
---|
112 | catch(err) { |
---|
113 | ; |
---|
114 | } |
---|
115 | |
---|
116 | #SET{map_controls,#ARRAY} |
---|
117 | |
---|
118 | [(#ENV{no_control,#ENV{aucun_controle}}|!={oui}|oui) |
---|
119 | [(#SET{map_controls,#GET{map_controls}|array_merge{#ARRAY{zoom,#ENV{control_zoom,large}}}})] |
---|
120 | ] |
---|
121 | |
---|
122 | [(#ENV{overview}|oui) |
---|
123 | [(#SET{map_controls,#GET{map_controls}|array_merge{#ARRAY{overview,true}}})] |
---|
124 | ] |
---|
125 | |
---|
126 | [(#ENV{scale}|oui) |
---|
127 | [(#SET{map_controls,#GET{map_controls}|array_merge{#ARRAY{scale,true}}})] |
---|
128 | ] |
---|
129 | |
---|
130 | [(#ENV{control_type,#ENV{controle_type}}|!={non}|oui) |
---|
131 | [(#SET{map_controls,#GET{map_controls}|array_merge{#ARRAY{map_type,true}}})] |
---|
132 | ] |
---|
133 | |
---|
134 | [(#ENV{control_pan,#ENV{controle_pan}}|!={non}|oui) |
---|
135 | [(#SET{map_controls,#GET{map_controls}|array_merge{#ARRAY{pan,true}}})] |
---|
136 | ] |
---|
137 | |
---|
138 | map[(#GET{id})].addControls([(#GET{map_controls}|json_encode)]); |
---|
139 | |
---|
140 | [(#ENV{point}|!={non}|oui) |
---|
141 | jQuery.getJSON("[(#URL_PAGE{gis_json}|url_absolue)]", |
---|
142 | {[ |
---|
143 | objets : "(#ENV{objets,#ENV{class}}|trim)",][ |
---|
144 | id_rubrique : (#ENV{id_rubrique}|trim),][ |
---|
145 | id_secteur : (#ENV{id_secteur}|trim),][ |
---|
146 | id_parent : (#ENV{id_parent}|trim),][ |
---|
147 | id_article : (#ENV{id_article}|trim),][ |
---|
148 | id_breve : (#ENV{id_breve}|trim),][ |
---|
149 | id_document : (#ENV{id_document}|trim),][ |
---|
150 | id_mot : (#ENV{id_mot}|trim),][ |
---|
151 | id_groupe : (#ENV{id_groupe}|trim),][ |
---|
152 | id_auteur : (#ENV{id_auteur}|trim),][ |
---|
153 | id_syndic : (#ENV{id_syndic}|trim),][ |
---|
154 | id_forum : (#ENV{id_forum}|trim),][ |
---|
155 | id_evenement : (#ENV{id_evenement}|trim),][ |
---|
156 | id_gis : (#ENV{id_gis}|trim),][ |
---|
157 | recherche : "(#ENV{recherche})",][ |
---|
158 | mots : (#ENV{mots}|?{[(#ENV{mots}|trim|json_encode)],''}),][ |
---|
159 | limit : (#ENV{limit,#ENV{limite,500}}|trim)] |
---|
160 | }, |
---|
161 | function(data) { |
---|
162 | if (data){ |
---|
163 | map[(#GET{id})].addJSON(data); |
---|
164 | [(#ENV{autocenterandzoom,#ENV{centrer_auto}}|oui) |
---|
165 | var markers = map[(#GET{id})].markers; |
---|
166 | if (markers.length == 1){ |
---|
167 | map[(#GET{id})].setCenterAndZoom(new mxn.LatLonPoint(markers[(#VAL{91}|chr)]0[(#VAL{93}|chr)].location.lat,markers[(#VAL{91}|chr)]0[(#VAL{93}|chr)].location.lon),#ENV{zoom,#CONFIG{gis/zoom,0}}); |
---|
168 | } else { |
---|
169 | map[(#GET{id})].autoCenterAndZoom(); |
---|
170 | }] |
---|
171 | [(#ENV{autofocus_marker}|oui) |
---|
172 | gis_autofocus_marker('[(#GET{id})]'); |
---|
173 | ] |
---|
174 | } |
---|
175 | } |
---|
176 | );] |
---|
177 | |
---|
178 | <BOUCLE_test_kml(CONDITION){si (#ENV{kml}|oui)}> |
---|
179 | #SET{kml, #ENV{kml}} |
---|
180 | [(#GET{kml}|is_array|non) #SET{kml, #ARRAY{0,#GET{kml}}} ] |
---|
181 | |
---|
182 | <BOUCLE_kml(POUR){tableau #GET{kml}}> |
---|
183 | [(#VALEUR|intval|oui) |
---|
184 | map[(#GET{id})].addOverlay(['(#VALEUR|generer_url_entite{document}|url_absolue)']); |
---|
185 | ] |
---|
186 | [(#VALEUR|intval|non) |
---|
187 | map[(#GET{id})].addOverlay(['(#VALEUR)']); |
---|
188 | ] |
---|
189 | </BOUCLE_kml> |
---|
190 | </BOUCLE_test_kml> |
---|
191 | |
---|
192 | [(#ENV{localize_visitor,#ENV{localiser_visiteur}}|oui) |
---|
193 | gis_get_navigator_location(map[(#GET{id})],#ENV{zoom,#CONFIG{gis/zoom,0}});] |
---|
194 | |
---|
195 | } |
---|
196 | |
---|
197 | $(function(){ |
---|
198 | init_map[(#GET{id})](); |
---|
199 | [(#ENV{ajaxload}|!={non}|oui)onAjaxLoad(init_map[(#GET{id})]);] |
---|
200 | }); |
---|
201 | |
---|
202 | })(jQuery); |
---|
203 | --> |
---|
204 | </script> |
---|