[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / gis / modeles / carte_gis.html
index a9cc086..90f09a1 100644 (file)
@@ -10,6 +10,10 @@ Parametres possibles :
 - lon|lonxit|longitude = -4.7      longitude du centre de la carte\r
 - zoom = 5                         zoom de la carte\r
 - maxZoom = 13                     zoom maximum autorisé\r
+- minZoom = 13                     zoom minimum autorisé\r
+\r
+- default_layer = acetate                   nom de la couche affichée par défaut, "none" si on ne souhaite pas affiche de couche spécifique\r
+- affiche_layers = openmapsurfer/acetate    noms des couches proposées séparés par des /\r
 \r
 - sw_lat = lat - 10°               latitude du sud-ouest de la bounding box\r
 - sw_lon = lon - 10°               longitude du sud-ouest de la bounding box\r
@@ -22,25 +26,32 @@ Parametres possibles :
 \r
 - fullscreen = oui                     afficher un bouton pour passer la carte en plein écran\r
 - zoom_molette|zoom_wheel = non        désactiver le zoom avec la molette de la souris, actif par defaut\r
-- control_type|controle_type = non     ne pas afficher les controles de changement de type\r
-- no_control|aucun_controle = oui      ne pas afficher les controles de la carte\r
+- control_type|controle_type = non     ne pas afficher le contrôle de changement de couche\r
+- control_type_collapsed = non         afficher le contrôle de changement de couche replié (oui par défaut)\r
+- no_control|aucun_controle = oui      ne pas afficher les contrôles de la carte\r
 - scale = oui                          afficher l'échelle de la carte\r
 - overview = oui                       afficher une mini carte de situation\r
 \r
 - autocenterandzoom|centrer_auto = oui        centrer et zoomer la carte automatiquement pour afficher tous les marqueurs\r
 - localize_visitor|localiser_visiteur = oui   centrer la carte sur la position du visiteur (API geolocation HTML5)\r
+- localize_visitor_zoom = 12                  niveau de zoom sur la position du visiteur (par défaut la valeur de zoom de la carte) \r
 - id_a_ouvrir                                 id_gis de l'infobulle à afficher au chargement(marqueur uniquement)\r
 \r
 - objets = gis                     type d'objets à afficher (fichier json/gis_xx qui génère la source de donnees)\r
 - limit|limite = 500               nombre max de marqueurs à afficher, 500 par defaut\r
+- langue = null                    langue des objets à récupérer (utile pour les multis notamment)\r
+- tooltip = oui                                          affiche un tooltip sur les points\r
 - kml = 12                         kml à superposer à la carte (id_document ou url ou liste d'url)\r
 - gpx = 12                         gpx à superposer à la carte (id_document ou url ou liste d'url)\r
+- geojson = 12                     geojson à superposer à la carte (id_document ou url ou liste d'url)\r
+- topojson = 12                    topojson à superposer à la carte (id_document ou url ou liste d'url)\r
 - centrer_fichier = non            permet de ne pas centrer la carte automatiquement sur les fichiers kml/gpx surperposés\r
 - point = non                      si elle vaut "non" cette option n'affichera pas de points du tout (utile pour n'afficher qu'un kml par exemple)\r
 \r
 - media = non                      permet de passer le critère 'media' (pour les documents)\r
-- mots = #LISTE{1,4,7}             plugin critere {mots} http://contrib.spip.net/Critere-mots\r
+- mots = #LISTE{1,4,7}             plugin critere {mots} https://contrib.spip.net/Critere-mots\r
 - path_styles=#ARRAY{color,#fff}   options de style des éléments de la couche GeoJSON (voir http://leafletjs.com/reference.html#path-options)\r
+- options=#ARRAY{option1,valeur1}  options ajoutées à la carte (qui peuvent être récupérées dans la fonction de callback par exemple par la suite)\r
 \r
 Uniquement si objets = point_libre :\r
 - icone = chemin/vers/image        image utilisée pour le marker\r
@@ -48,9 +59,12 @@ Uniquement si objets = point_libre :
 - description                      description du point\r
 \r
 Clustering (regroupement de points proches) :\r
-- cluster = oui                    Active le clustering\r
-- clusterMaxZoom = 11              Regroupe les points jusque à ce zoom, mais pas au delà\r
-- clusterShowCoverageOnHover = 0   1 pour afficher un dessin au survol de la zone couvertes par les points regroupés\r
+- cluster = oui                      Active le clustering\r
+- clusterMaxZoom = 11                Regroupe les points jusque à ce zoom, mais pas au delà\r
+- clusterShowCoverageOnHover = oui   Affiche au survol du cluster le contour de la zone couverte par les points regroupés\r
+- maxClusterRadius = 80              Le rayon maximal (en pixels) qu'un cluster couvrira (80 pixels par defaut)\r
+- clusterSpiderfyOnMaxZoom = oui     Active l'effet d'éclatement pour afficher les points qui se chevauchent\r
+- singleMarkerMode = oui                Utilise les icones de cluster pour tous les points (même ceux qui ne sont pas dans un cluster)\r
 ]\r
 \r
 [(#SET{width,#ENV{width,#ENV{largeur,100%}}})]\r
@@ -62,6 +76,7 @@ Clustering (regroupement de points proches) :
 [(#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\r
     les valeurs par defaut sont "centre +/- 10°", ce qui est naze, mais c'est un cas normalement impossible\r
 ]\r
+#SET{utiliser_bb, ''}\r
 [(#ENV{lat}|ou{#ENV{lon}}|non|et{#ENV{sw_lat}}|et{#ENV{sw_lon}}|et{#ENV{ne_lat}}|et{#ENV{ne_lon}})\r
        #SET{utiliser_bb, oui}\r
        #SET{sw_lat,#ENV{sw_lat,#GET{lat}|moins{10}}}\r
@@ -74,58 +89,77 @@ Clustering (regroupement de points proches) :
 \r
 <script type="text/javascript">/*<!\[CDATA\[*/\r
 var map[(#GET{id})];\r
-if (typeof map_cfg=="undefined") var map_cfg = {};\r
-map_cfg["[(#GET{id})]"] = {\r
-"mapid":"map[(#GET{id})]",\r
-"scrollWheelZoom": [(#ENV{zoom_molette,#ENV{zoom_wheel}}|=={non}|?{false,true})],\r
-"zoomControl": [(#ENV{no_control,#ENV{aucun_controle}}|!={oui}|?{true,false})][,\r
-"maxZoom": (#ENV{maxZoom})],\r
-"utiliser_bb":[(#GET{utiliser_bb}|?{true,false})],\r
-"lat":[(#GET{lat})][,\r
-"sw_lat":(#GET{sw_lat})][,\r
-"ne_lat":(#GET{ne_lat})],\r
-"lon":[(#GET{lon})][,\r
-"sw_lon":(#GET{sw_lon})][,\r
-"ne_lon":(#GET{ne_lon})],\r
-"zoom":[(#ENV{zoom,#CONFIG{gis/zoom,0}})],\r
-"default_layer":"[(#REM|gis_layer_defaut)]",\r
-"layers":#EVAL{json_encode($GLOBALS['gis_layers'])},\r
-"affiche_layers":[(#CONFIG{gis/layers,#ARRAY}|json_encode)],\r
-"control_type":[(#ENV{control_type,#ENV{controle_type}}|=={non}|?{false,true})],\r
-"no_control":[(#ENV{no_control,#ENV{aucun_controle}}|=={oui}|?{true,false})],\r
-"scale":[(#ENV{scale}|=={oui}|?{true,false})],\r
-"overview":[(#ENV{overview}|=={oui}|?{true,false})],\r
-"fullscreen":[(#ENV{fullscreen}|=={oui}|?{true,false})],\r
-"cluster":[(#ENV{cluster}|=={oui}|?{true,false})],\r
-"clusterMaxZoom":[(#ENV{clusterMaxZoom, #ENV{maxZoom}|?{#ENV{maxZoom}|moins{2},0}})],\r
-"clusterShowCoverageOnHover":[(#ENV{clusterShowCoverageOnHover}|?{true,false})],\r
-"path_styles":[(#ENV*{path_styles}|json_encode)],\r
-"autocenterandzoom":[(#ENV{autocenterandzoom,#ENV{centrer_auto}}|?{true,false})],\r
-"open_id":"[(#ENV{id_a_ouvrir,''})]",\r
-"affiche_points":[(#ENV{point,''}|=={non}|?{false,true})],\r
-"json_points":{\r
-       "url":"[(#URL_PAGE{gis_json}|url_absolue)]"[,\r
-       "objets":"(#ENV{objets,#ENV{class}}|trim)"],\r
-       "limit":[(#ENV{limit,#ENV{limite,500}}|trim)],\r
-       "env":[(#ENV*{args,#ENV*}|gis_modele_url_json_env|json_encode)][,\r
-       "titre" : (#ENV{titre}|json_encode)][,\r
-       "description" : (#ENV{description}|json_encode)][,\r
-       "icone" : (#ENV{icone}|json_encode)]\r
-       },\r
-"localize_visitor":[(#ENV{localize_visitor,#ENV{localiser_visiteur}}|?{true,false})],\r
-"centrer_fichier":[(#ENV{centrer_fichier,oui}|=={oui}|?{true,false})],\r
-"kml":[(#ENV{kml,''}|?{[(#ENV{kml}|is_array|?{#ENV{kml},#LISTE{#ENV{kml}}}|gis_kml_to_urls|json_encode)],false})],\r
-"gpx":[(#ENV{gpx,''}|?{[(#ENV{gpx}|is_array|?{#ENV{gpx},#LISTE{#ENV{gpx}}}|gis_kml_to_urls|json_encode)],false})]\r
-};\r
-\r
-// Charger le javascript de GIS et initialiser la carte (des que DOM ready)\r
-jQuery.getScript('[(#PRODUIRE{fond=javascript/gis.js,cluster=#ENV{cluster,non}})]',function(){\r
-       jQuery(function(){\r
-               if (typeof(callback_map[(#GET{id})]) === "function") {\r
-                       map_cfg["[(#GET{id})]"]['callback']=callback_map[(#GET{id})];\r
+var jQgisloader;\r
+(function (){\r
+       if (typeof jQuery.ajax == "undefined"){jQuery(init_gis);}else {init_gis();}\r
+       function init_gis(){\r
+               // Charger le javascript de GIS une seule fois si plusieurs carte\r
+               if (typeof jQgisloader=="undefined"){\r
+                       jQgisloader = jQuery.ajax({url: '[(#PRODUIRE{fond=javascript/gis.js})]', dataType: 'script', cache: true});\r
                }\r
-               gis_init_map(map_cfg["[(#GET{id})]"]);\r
-       });\r
-});\r
+               // et initialiser la carte (des que js GIS charge et des que DOM ready)\r
+               jQgisloader.done(function(){\r
+                       jQuery(function(){\r
+                               map[(#GET{id})] = new L.Map.Gis('map[(#GET{id})]',{\r
+                                       mapId: '[(#GET{id})]',\r
+                                       callback: (typeof(callback_map[(#GET{id})]) === "function") ? callback_map[(#GET{id})] : false,\r
+                                       center: [#GET{lat},#GET{lon}],\r
+                                       zoom: [(#ENV{zoom,#CONFIG{gis/zoom,0}}|trim)][,\r
+                                       maxZoom: (#ENV{maxZoom}|trim)][,\r
+                                       minZoom: (#ENV{minZoom}|trim)][,\r
+                                       default_layer: '(#ENV{default_layer}|trim)'][,\r
+                                       affiche_layers: (#ENV{affiche_layers}|trim|?{[(#ENV{affiche_layers}|trim|explode{/}|json_encode)],''})],\r
+                                       scrollWheelZoom: [(#ENV{zoom_molette,#ENV{zoom_wheel}}|trim|=={non}|?{false,true})],\r
+                                       zoomControl: [(#ENV{no_control,#ENV{aucun_controle}}|trim|!={oui}|?{true,false})],\r
+                                       fullscreenControl: [(#ENV{fullscreen}|trim|=={oui}|?{true,false})],\r
+                                       scaleControl: [(#ENV{scale}|trim|=={oui}|?{true,false})],\r
+                                       overviewControl:[(#ENV{overview}|trim|=={oui}|?{true,false})],\r
+                                       layersControl: [(#ENV{control_type,#ENV{controle_type}}|trim|=={non}|?{false,true})],\r
+                                       layersControlOptions: {\r
+                                               collapsed: [(#ENV{control_type_collapsed,#ENV{control_type_collapsed}}|trim|=={non}|?{false,true})]\r
+                                       },\r
+                                       noControl: [(#ENV{no_control,#ENV{aucun_controle}}|trim|=={oui}|?{true,false})],\r
+                                       utiliser_bb: [(#GET{utiliser_bb}|?{true,false})][,\r
+                                       sw_lat: (#GET{sw_lat})][,\r
+                                       ne_lat: (#GET{ne_lat})][,\r
+                                       sw_lon: (#GET{sw_lon})][,\r
+                                       ne_lon: (#GET{ne_lon})],\r
+                                       affiche_points: [(#ENV{point,''}|=={non}|?{false,true})][,\r
+                                       langue:'(#ENV{langue})'],\r
+                                       json_points:{\r
+                                               url: '[(#URL_PAGE{gis_json}|parametre_url{lang,#ENV{langue},&}|url_absolue)]'[,\r
+                                               objets: '(#ENV{objets,#ENV{class}}|trim)'],\r
+                                               limit: [(#ENV{limit,#ENV{limite,500}}|trim)],\r
+                                               env: [(#ENV*{args,#ENV*}|gis_modele_url_json_env|json_encode)][,\r
+                                               titre: (#ENV{titre}|?{#ENV{titre},''}|trim|json_encode)][,\r
+                                               description: (#ENV{description}|?{#ENV{description},''}|trim|json_encode)][,\r
+                                               icone: (#ENV{icone}|?{#ENV{icone},''}|trim|json_encode)]\r
+                                       },\r
+                                       tooltip: [(#ENV{tooltip}|=={oui}|?{true,false})],\r
+                                       cluster: [(#ENV{cluster}|=={oui}|?{true,false})],\r
+                                       clusterOptions: {\r
+                                               disableClusteringAtZoom: [(#ENV{clusterMaxZoom,0})],\r
+                                               showCoverageOnHover: [(#ENV{clusterShowCoverageOnHover}|?{true,false})],\r
+                                               spiderfyOnMaxZoom: [(#ENV{clusterSpiderfyOnMaxZoom}|?{true,false})],\r
+                                               maxClusterRadius: [(#ENV{maxClusterRadius,80})],\r
+                                               singleMarkerMode: [(#ENV{singleMarkerMode}|?{true,false})]\r
+                                       },\r
+                                       pathStyles: [(#ENV*{path_styles}|json_encode)],\r
+                                       autocenterandzoom: [(#ENV{autocenterandzoom,#ENV{centrer_auto,non}}|trim|=={non}|?{false,true})],\r
+                                       openId: [(#ENV{id_a_ouvrir,false})],\r
+                                       localize_visitor: [(#ENV{localize_visitor,#ENV{localiser_visiteur}}|trim|?{true,false})],\r
+                                       localize_visitor_zoom: [(#ENV{localize_visitor_zoom,#ENV{zoom,#CONFIG{gis/zoom,0}}}|trim)],\r
+                                       centrer_fichier: [(#ENV{centrer_fichier,oui}|trim|=={oui}|?{true,false})],\r
+                                       kml: [(#ENV{kml,''}|?{[(#ENV{kml}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})],\r
+                                       gpx: [(#ENV{gpx,''}|?{[(#ENV{gpx}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})],\r
+                                       geojson: [(#ENV{geojson,''}|?{[(#ENV{geojson}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})],\r
+                                       topojson: [(#ENV{topojson,''}|?{[(#ENV{topojson}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})],\r
+                                       options: [(#ENV*{options,#ARRAY}|json_encode)]\r
+                               });\r
+                       });\r
+               });\r
+       }\r
+\r
+})()\r
 /*\]\]>*/\r
 </script>\r