Carte GIS et formulaire

Bonjour,
Il y a bien 10 ans que je n’ai pas fait de carte sous GIS, et j’ai tout oublié…
Je souhaite, sur une page, gérer une liste d’annonces de stages en entreprises :

  • placer un formulaire avec des critères : formations, contrats, … (j’ai créé le formulaire avec déclaration Php pour l’instant)
  • placer un premier résultat sous forme de carte GIS avec les points des articles correspondants à la recherche
  • placer un second résultat sous forme de liste d’articles correspondants à la recherche.

En formulaire de base, je devrais inclure les squelettes d’affichage des résultats dans le html du formulaire.
Mais pour que la page soit plus stable, j’aimerais ne pas recharger la carte à chaque soumission de formulaire mais ré-injecter les points dans la carte, puis recharger la liste des articles en Ajax, donc avoir 3 blocs distincts consécutifs, et non pas imbriqués.

Et je ne retrouve plus quel mécanisme permet de ré-injecter les points (JSON?) dans la carte après que le formulaire est traité… ?

Merci

Ah si ça commence à revenir…
Est-ce que je peux :

  • dans formulaire_xx_traiter placer mes critères dans une variable de session
  • dans le html du formulaire placer un javascript qui recharge la liste d’articles par ajax, et celui-ci récupère les critères sur la session
    … ?

Pour ça tu peux regarder de ce côté https://contrib.spip.net/Astuces-GIS et utiliser la méthode parseGeoJson cf https://git.spip.net/spip-contrib-extensions/gis/src/branch/master/javascript/leaflet.gis.js#L240

Bonjour,
OK j’ai regardé parseGeoJson. Il attend un paramètre data ; est-ce une structure JSON comme elle sort de json/gis_articles.html ? Donc

<script type='text/javascript'>
  var loMap = $('#map1').get(0).map;
  loMap.parseGeoJson("#INCLURE{fond=json/gis_articles,id_rubrique=1}");
</script>

Sinon si j’ai créé ma carte avec des objets de type annonces

[(#INCLURE{fond=modeles/carte_gis,objets=annonces,zoom=8,limit=100,scale=oui})]

et personnalisé gis_annonces.html (boucle ARTICLES).
La mise à jour est-elle :

loMap.parseGeoJson("#INCLURE{fond=json/gis_annonces,env}");

Enfin pour mettre à jour la carte si le résultats de gis_annonces a changé (selon variable de session), est-ce que je peux faire un simple

loMap.loadData();

?
https://git.spip.net/spip-contrib-extensions/gis/src/branch/master/javascript/leaflet.gis.js#L349

Merci

Bonsoir,
J’ai trouvé ma réponse ici :
https://contrib.spip.net/Tutoriel-creer-une-carte-interactive-avec-GIS4#Afficher-des-points-sur-une-carte-existante
Merci