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
- Mise en place d’un proxy (action=gis_geocoder_rechercher) vers le
service de géocodage. Ce proxy est (pour l’instant ?) très naïf et
permet essentiellement de requêter le système Nominatim, accessible
uniquement HTTP, même sur les installations en HTTPS (le proxy
permet d’éviter les blocages pour cause de « Mixed Content »).
- Utilisation du service Nominatim d’OpenStreetMap (en remplacement de
la version proposée par MapQuest qui semble être moins efficace).
* Mise à jour de la lib qui n'embarque plus que les scripts utilisés + réorganisation de son contenu
* La lib du passe sur contrib vu qu'on ne peut plus déposer de zip chez github
* Passage du script de clustering dans la lib, les css peuvent être surchargées dans un répertoire css/
* Mise à jour du plugin leaflet-providers (ajout de couches Nokia, ESRI, etc.)
* Mise à jour du plugin minimap (option toggle active pour permettre d'afficher/masquer ce bloc)
* Le script de gis embarque la version non compressée de Leaflet si la compression des scripts de SPIP est désactivée (pratique pour le debug)
Note : Actuellement il y a un problème avec le mode 'autocenterandzoom=oui' lorsque des points ET des kmls sont présents. La carte se centre sur un kml un peu au hasard, sans tenir compte des points. Ceci indépendamment de l'utilisation ou non de clusters.
Exemple d'appel :
```
[(#INCLURE{fond=modeles/carte_gis,
objets=articles,
id_rubrique=#ID_RUBRIQUE,
zoom=#CONFIG{gis/zoom},
maxZoom=13,
lat=#CONFIG{gis/lat},
lon=#CONFIG{gis/lon},
hauteur=600px,
controle_type=oui,
autocenterandzoom=oui,
cluster=oui,
clusterShowCoverageOnHover=0,
kml=[(#LISTE{
[(#CHEMIN{kml/16.kml}|timestamp|url_absolue)],
[(#CHEMIN{kml/17.kml}|timestamp|url_absolue)],
[(#CHEMIN{kml/86.kml}|timestamp|url_absolue)],
[(#CHEMIN{kml/79.kml}|timestamp|url_absolue)]})]})]
```
Plutot que generer plein de JS specifique a la carte, on rend tout le js generique et on lui passe simplement un tableau de configuration contenant toutes les specificites de la carte a afficher
par compatibilite l'objet map construit reste attache a la globale map#ENV{id} mais il est aussi attache a l'objet du DOM qui porte la carte.
On peut donc toujours le retrouver par $('#maptruc').get(0).map ce qui est plus generique
Les methodes AddJSON et removeAllMarkers compatibilite GIS 3 y sont attaches
Les methodes setGeoJsonFeatureIcon, setGeoJsonFeaturePopup et parseGeoJson y sont egalement attachees (on peut donc avoir une map avec cluster et une map sans cluster dans la meme page sans risque de conflit de fonction)
La lib leafclusterer.js est inclue par gis.js a la demande (via argument de #PRODUIRE_FOND) ce qui evite de charger les libs en 2 hits quand on utilise les clusters