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

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

Version 4.20.0 : refactoring de l'API js + maj vers leaflet 0.7.3

Refonte de l'API javascript sous forme de plugin Leaflet, L.Map.Gis étend L.Map

  • les options sont passées à l'objet lors de son initialisation, renommage de certaines options pour se caler sur celles de Leaflet
  • les variables de configuration default_layer, gis_layers et affiche_layers sont regroupées dans l'objet L.gisConfig située dans le squelette gis.js.html, ainsi le script leaflet.gis.js n'a plus besoin d'être un squelette
  • du coup on peut ajouter deux paramètres au modèle : default_layer permet de définir ponctuellement le fond de carte affiché par défaut, affiche_layers permet de définir la liste des fonds proposées par la carte
  • on en profite pour regrouper les variables de config du geocoder dans un objet L.geocoderConfig
  • toutes les méthodes l'ancienne API sont attachées à l'objet L.Map.Gis
  • l'objet de la carte est toujours attaché à une variable globale de type mapID_MAP

Dans le mode de la carte :

  • utiliser ajax au lieu de getScript pour permettre la mise en cache
  • toujours inclure la lib de clustering sinon l'eval du script peut poser problème losqu'on utilise une carte avec clustering sur une page qui comporte une autre carte sans clustering

Maj des libs : on passe en leaflet 0.7.3 et maj des plugins

  • permet de régler le bug des cartes qui se figent au chargement losqu'on affiche un kml/gpx/json en overlay
File size: 8.1 KB
Line 
1[(#REM)
2
3Modele carte_gis
4----------------
5
6Parametres possibles :
7
8- id_map|id_carte_gis = 1          id de la carte
9- lat|latit|latitude = 48.3        latitude du centre de la carte
10- lon|lonxit|longitude = -4.7      longitude du centre de la carte
11- zoom = 5                         zoom de la carte
12- maxZoom = 13                     zoom maximum autorisé
13- minZoom = 13                     zoom minimum autorisé
14
15- default_layer = acetate                   nom de la couche affichée par défaut
16- affiche_layers = openmapsurfer/acetate    noms des couches proposées (séparées par des /)
17
18- sw_lat = lat - 10°               latitude du sud-ouest de la bounding box
19- sw_lon = lon - 10°               longitude du sud-ouest de la bounding box
20- ne_lat = lat + 10°               latitude du nord-est de la bounding box
21- ne_lon = lon + 10°               longitude du nord-est de la bounding box
22
23- width|largeur = 100%             largeur de la carte, 100% par defaut
24- height|hauteur = 400px           hauteur de la carte, 400px par defaut
25- style = non                      ne pas styler la carte
26
27- fullscreen = oui                     afficher un bouton pour passer la carte en plein écran
28- zoom_molette|zoom_wheel = non        désactiver le zoom avec la molette de la souris, actif par defaut
29- control_type|controle_type = non     ne pas afficher le contrôle de changement de couche
30- control_type_collapsed = non                  afficher le contrôle de changement de couche replié (oui par défaut)
31- no_control|aucun_controle = oui      ne pas afficher les contrôles de la carte
32- scale = oui                          afficher l'échelle de la carte
33- overview = oui                       afficher une mini carte de situation
34
35- autocenterandzoom|centrer_auto = oui        centrer et zoomer la carte automatiquement pour afficher tous les marqueurs
36- localize_visitor|localiser_visiteur = oui   centrer la carte sur la position du visiteur (API geolocation HTML5)
37- localize_visitor_zoom = 12    niveau de zoom sur la position du visiteur (par défaut la valeur de zoom de la carte)
38- id_a_ouvrir                                 id_gis de l'infobulle à afficher au chargement(marqueur uniquement)
39
40- objets = gis                     type d'objets à afficher (fichier json/gis_xx qui génère la source de donnees)
41- limit|limite = 500               nombre max de marqueurs à afficher, 500 par defaut
42- kml = 12                         kml à superposer à la carte (id_document ou url ou liste d'url)
43- gpx = 12                         gpx à superposer à la carte (id_document ou url ou liste d'url)
44- geojson = 12                     geojson à superposer à la carte (id_document ou url  ou liste d'url)
45- centrer_fichier = non            permet de ne pas centrer la carte automatiquement sur les fichiers kml/gpx surperposés
46- point = non                      si elle vaut "non" cette option n'affichera pas de points du tout (utile pour n'afficher qu'un kml par exemple)
47
48- media = non                      permet de passer le critère 'media' (pour les documents)
49- mots = #LISTE{1,4,7}             plugin critere {mots} http://contrib.spip.net/Critere-mots
50- path_styles=#ARRAY{color,#fff}   options de style des éléments de la couche GeoJSON (voir http://leafletjs.com/reference.html#path-options)
51
52Uniquement si objets = point_libre :
53- icone = chemin/vers/image        image utilisée pour le marker
54- titre                            titre du point
55- description                      description du point
56
57Clustering (regroupement de points proches) :
58- cluster = oui                    Active le clustering
59- clusterMaxZoom = 11              Regroupe les points jusque à ce zoom, mais pas au delà
60- clusterShowCoverageOnHover = 0   1 pour afficher un dessin au survol de la zone couvertes par les points regroupés
61- maxClusterRadius = 80            Le rayon maximal (en pixels) qu'un cluster couvrira (80 pixels par defaut)
62]
63
64[(#SET{width,#ENV{width,#ENV{largeur,100%}}})]
65[(#SET{height,#ENV{height,#ENV{hauteur,400px}}})]
66[(#SET{id,#ENV{id_carte_gis,#ENV{id_map,#ENV{id,1}}}})]
67[(#REM) -- compat gis v1 -- ]
68[(#SET{lat,#ENV{lat,#ENV{latit,#ENV{latitude,#CONFIG{gis/lat,0}}}}})]
69[(#SET{lon,#ENV{lon,#ENV{lonxit,#ENV{longitude,#CONFIG{gis/lon,0}}}}})]
70[(#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
71    les valeurs par defaut sont "centre +/- 10°", ce qui est naze, mais c'est un cas normalement impossible
72]
73[(#ENV{lat}|ou{#ENV{lon}}|non|et{#ENV{sw_lat}}|et{#ENV{sw_lon}}|et{#ENV{ne_lat}}|et{#ENV{ne_lon}})
74        #SET{utiliser_bb, oui}
75        #SET{sw_lat,#ENV{sw_lat,#GET{lat}|moins{10}}}
76        #SET{sw_lon,#ENV{sw_lon,#GET{lon}|moins{10}}}
77        #SET{ne_lat,#ENV{ne_lat,#GET{lat}|plus{10}}}
78        #SET{ne_lon,#ENV{ne_lon,#GET{lon}|plus{10}}}
79]
80
81<div id="map[(#GET{id})]" class="carte_gis"[(#ENV{style}|!={'non'}|?{' '})style="[width:(#GET{width});][ height:(#GET{height});]"]></div>
82
83<script type="text/javascript">/*<!\[CDATA\[*/
84var map[(#GET{id})];
85// Charger le javascript de GIS et initialiser la carte (des que DOM ready)
86jQuery.ajax({url: '[(#PRODUIRE{fond=javascript/gis.js})]', dataType: 'script', cache: true}).done(function(){
87        jQuery(function(){
88                map[(#GET{id})] = new L.Map.Gis('map[(#GET{id})]',{
89                        mapId: '[(#GET{id})]',
90                        callback: (typeof(callback_map[(#GET{id})]) === "function") ? callback_map[(#GET{id})] : false,
91                        center: [#GET{lat},#GET{lon}],
92                        zoom: [(#ENV{zoom,#CONFIG{gis/zoom,0}})][,
93                        maxZoom: (#ENV{maxZoom})][,
94                        minZoom: (#ENV{minZoom})][,
95                        default_layer: '(#ENV{default_layer})'][,
96                        affiche_layers: (#ENV{affiche_layers}|?{[(#ENV{affiche_layers}|explode{/}|json_encode)],''})],
97                        scrollWheelZoom: [(#ENV{zoom_molette,#ENV{zoom_wheel}}|=={non}|?{false,true})],
98                        zoomControl: [(#ENV{no_control,#ENV{aucun_controle}}|!={oui}|?{true,false})],
99                        fullscreenControl: [(#ENV{fullscreen}|=={oui}|?{true,false})],
100                        scaleControl: [(#ENV{scale}|=={oui}|?{true,false})],
101                        overviewControl:[(#ENV{overview}|=={oui}|?{true,false})],
102                        layersControl: [(#ENV{control_type,#ENV{controle_type}}|=={non}|?{false,true})],
103                        layersControlOptions: {
104                                collapsed: [(#ENV{control_type_collapsed,#ENV{control_type_collapsed}}|=={non}|?{false,true})]
105                        },
106                        noControl: [(#ENV{no_control,#ENV{aucun_controle}}|=={oui}|?{true,false})],
107                        utiliser_bb: [(#GET{utiliser_bb}|?{true,false})][,
108                        sw_lat: (#GET{sw_lat})][,
109                        ne_lat: (#GET{ne_lat})][,
110                        sw_lon: (#GET{sw_lon})][,
111                        ne_lon: (#GET{ne_lon})],
112                        affiche_points: [(#ENV{point,''}|=={non}|?{false,true})],
113                        json_points:{
114                                url: '[(#URL_PAGE{gis_json}|url_absolue)]'[,
115                                objets: '(#ENV{objets,#ENV{class}}|trim)'],
116                                limit: [(#ENV{limit,#ENV{limite,500}}|trim)],
117                                env: [(#ENV*{args,#ENV*}|gis_modele_url_json_env|json_encode)][,
118                                titre: (#ENV{titre}|?{#ENV{titre},''}|json_encode)][,
119                                description: (#ENV{description}|?{#ENV{description},''}|json_encode)][,
120                                icone: (#ENV{icone}|?{#ENV{icone},''}|json_encode)]
121                        },
122                        cluster: [(#ENV{cluster}|=={oui}|?{true,false})],
123                        clusterOptions: {
124                                disableClusteringAtZoom: [(#ENV{clusterMaxZoom, #ENV{maxZoom}|?{#ENV{maxZoom}|moins{2},0}})],
125                                showCoverageOnHover: [(#ENV{clusterShowCoverageOnHover}|?{true,false})],
126                                maxClusterRadius: [(#ENV{maxClusterRadius,80})]
127                        },
128                        pathStyles: [(#ENV*{path_styles}|json_encode)],
129                        autocenterandzoom: [(#ENV{autocenterandzoom,#ENV{centrer_auto}}|?{true,false})],
130                        openId: [(#ENV{id_a_ouvrir,false})],
131                        localize_visitor: [(#ENV{localize_visitor,#ENV{localiser_visiteur}}|?{true,false})],
132                        localize_visitor_zoom: [(#ENV{localize_visitor_zoom,#ENV{zoom,#CONFIG{gis/zoom,0}}})],
133                        centrer_fichier: [(#ENV{centrer_fichier,oui}|=={oui}|?{true,false})],
134                        kml: [(#ENV{kml,''}|?{[(#ENV{kml}|is_array|?{#ENV{kml},#LISTE{#ENV{kml}}}|gis_kml_to_urls|json_encode)],false})],
135                        gpx: [(#ENV{gpx,''}|?{[(#ENV{gpx}|is_array|?{#ENV{gpx},#LISTE{#ENV{gpx}}}|gis_kml_to_urls|json_encode)],false})],
136                        geojson: [(#ENV{geojson,''}|?{[(#ENV{geojson}|is_array|?{#ENV{geojson},#LISTE{#ENV{geojson}}}|gis_kml_to_urls|json_encode)],false})]
137                });
138        });
139});
140/*\]\]>*/
141</script>
Note: See TracBrowser for help on using the repository browser.