GIS : légende par mots clés - commentaires GIS : légende par mots clés 2023-03-18T16:39:39Z https://files.spip.net/GIS-legende-par-mots-cles#comment512952 2023-03-18T16:39:39Z <p>J'ai trouvé comment prendre le meilleur des 2 :<br class="autobr"> Je crée un formulaire de sélection des points :<br class="autobr"> Donc dans ma page principale j'ai :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><div clas_='ajax'> [(#FORMULAIRE_GISMOTSLEGENDE)] </div> [(#MODELE{carte_gis,objets=touslesmots,id_groupe=1})] </code></pre></div> <p>Mon formulaire html se termine par :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><textarea id='points'><INCLURE{fond=json/gis_motslegende,env}></textarea> [<p clas_="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] </div> </code></pre></div> <p>Enfin mon « traiter » du formulaire contient :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function formulaires_gismotslegende_traiter_dist(){ $res = array(); $lsScript = <<<MLS OK <script type='text/javascript'> var loMap = $('#map1').get(0).map; loMap.removeAllMarkers(); loMap.parseGeoJson( JSON.parse( '{"type": "FeatureCollection", "features": ['+ $('#points').val()+ ']}' )); </script> MLS; $res['message_ok'] .= $lsScript; return $res; } </code></pre></div> <p>Donc lorsque le formulaire est retourné, le Textarea contient la description des points à jour, puis la reponse_ok insère le script JS qui récupère le contenu du Textarea et l'envoie dans la carte.</p> <p>Ainsi, seul le formulaire est rechargé par Ajax, le fond de carte n'a pas été rechargé.</p> <p>(note : le clas_ remplace class pour que ce soit accepté dans les commentaires de cet article)</p> GIS : légende par mots clés 2023-03-13T13:57:42Z https://files.spip.net/GIS-legende-par-mots-cles#comment512921 2023-03-13T13:57:42Z <p>Oui cela recharge. Une solution pour simplement visible hidden par css (à coche/décoche ou validation input) aurait été mieux, dans certains cas. J'ai cherché un peu pas trouvé. Certainement c'est possible. J'ai des compétences limitées et plus de temps actuellement à y consacrer.</p> GIS : légende par mots clés 2023-03-12T19:42:48Z https://files.spip.net/GIS-legende-par-mots-cles#comment512917 2023-03-12T19:42:48Z <p>Bonjour, <br class="autobr"> Donc cette contribution recharge (il me semble) toute la carte (page) à chaque coche/décoche de mot-clé.<br class="autobr"> Et <a href='https://files.spip.net/Tutoriel-creer-une-carte-interactive-avec-GIS4' class="spip_in" rel='nofollow'>l'autre contribution de carte interactive</a> ne recharge pas la page mais n'affiche que les points liés à un seul mot-clé (pas de json à la volée).<br class="autobr"> Maintenant, comment faire une carte interactive (pas de recharge du fond de carte) qui permette de faire appel à une requête json xhr avec plusieurs mot-clés<small class="fine d-inline"> </small>?</p> GIS : légende par mots clés 2023-01-27T11:49:31Z https://files.spip.net/GIS-legende-par-mots-cles#comment512615 2023-01-27T11:49:31Z <p>Bonjour,<br class="autobr"> merci pour ce tuto.<br class="autobr"> Pour le faire fonctionner, j'ai dû : <br>- appeler le modèle par un inclure plutôt que #MODELE :<br class="autobr"> <code class="spip_code spip_code_inline" dir="ltr">[(#INCLURE{fond=modeles/carte_gis,objets=motslegende,mots=#ENV{mots}})]</code> <br>- enlever le commentaire html <code class="spip_code spip_code_inline" dir="ltr"><!--autre possibilité etc --></code> dans le fichier gis_motslegende.html <br>- ajouter une virgule dans la boucle « gis » du même fichier pour que cela fonctionne quand on a un article qui a plusieurs points (sinon rien ne s'affiche, le json étant alors mal formé) : <code class="spip_code spip_code_inline" dir="ltr"><BOUCLE_gis(GIS){id_article}{","}></code><br class="autobr"> => là ça marche, merci<small class="fine d-inline"> </small>!</p> GIS : légende par mots clés 2022-04-13T11:01:25Z https://files.spip.net/GIS-legende-par-mots-cles#comment510707 2022-04-13T11:01:25Z <blockquote class="spip"> <p>2 points géo qui ont pour mots clés : tonton (logo vert) et tata ( logo pourpre).</p> </blockquote> <p>Je réponds bien tardivement pour préciser (comme je l'avais fait pour jeromeD ci dessous) : le cas que je traite est celui où ce sont des objets (rubriques ou articles ou autres) qui sont associés à <br>- un mot clé (et un seul) ayant un logo <br>- un point gis (et un seul . Un objet étant à plusieurs endroits paraissant problématique<small class="fine d-inline"> </small>;)<br class="autobr"> Pour le cas où on associe des point GIS à un mot clé , la BOUCLE_obj(OBJETS) n'a évidemment aucun intérêt et une boucle GIS suffira sans doute :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><BOUCLE_gis(GIS){id_objet}{id_mot IN #ENV{mots}}{","}> … "title": du point GIS … <BOUCLE_mot(MOTS){id_gis} …</code></pre></div> <p>qui devrais afficher les points GIS d'un objet (rubrique, article ou autre), avec le logo du mot qui lui est associé (au point GIS pas à l'objet<small class="fine d-inline"> </small>!).<br class="autobr"> C'est donc juste des besoins différents. Et d'autres sont sans doute possibles (par exemple afficher les points GIS d'articles sélectionnés par mots clés avec le(s) logo(s) du(des) mot(s) associé(s) à l'article … pour le choix d'une course d'orientation par exemple … )</p> GIS : légende par mots clés 2019-12-13T15:56:01Z https://files.spip.net/GIS-legende-par-mots-cles#comment503340 2019-12-13T15:56:01Z <p>Errata<small class="fine d-inline"> </small>!</p> <p>Je n'avais pas vu un troisième point sur ma carte ( d'une autre rubrique)<br class="autobr"> je viens de l'enlever et cela fonctionne donc avec les 2 points cités en exemple dans mon message plus précédent.<br class="autobr"> Ce qui n'enlève pas le dysfonctionnement avec plusieurs points sur plusieurs rubriques .</p> <p>Cordialement</p> GIS : légende par mots clés 2019-12-13T08:29:28Z https://files.spip.net/GIS-legende-par-mots-cles#comment503331 2019-12-13T08:29:28Z <p>re Bonjour,</p> <p>Je me permet ici d'essayer d'expliquer une partie de mon problème :</p> <p>Sur une rubrique j'ai respectivement <br class="autobr"> 2 points géo qui ont pour mots clés :<br class="autobr"> tonton (logo vert) et tata ( logo pourpre).</p> <p>1°) Sur la carte les couleurs de logo des points ne s'affichent pas, mais<br class="autobr"> en lieu et place les icônes par défaut de Gis (bleus) .</p> <p>2°) La légende propose donc 2 points :</p> <p>si je clique la checkbox «<small class="fine d-inline"> </small>tonton<small class="fine d-inline"> </small>», le point tonton s'affiche bien<br class="autobr"> si je clique une seconde fois sur la checkbox tata<br class="autobr"> (les deux checkbox sont donc activés) j'ai bien mais 2 points<br class="autobr"> par contre si je décoche tonton, logiquement tonton disparait<br class="autobr"> mais aussi tata alors que la checkbox tata est bien resté cochée.</p> <p>Donc problème avec le point «<small class="fine d-inline"> </small>tata<small class="fine d-inline"> </small>»</p> <p>Voilà où j'en suis , il faut dire que je tourne en rond, je ne sais pas comment <br class="autobr"> modifier les boucles dans Json , ou/et le formulaire de sélection .</p> <p>Merci pour votre aide et votre patience.</p> <p>Cordialement</p> GIS : légende par mots clés 2019-12-10T13:14:36Z https://files.spip.net/GIS-legende-par-mots-cles#comment503293 2019-12-10T13:14:36Z <p>Bonjour,<br class="autobr"> Je recrée un nouveau fil, pour demander de l'aide car j'ai bien tout suivi et ce tutoriel fonctionne.</p> <p>Néanmoins si on a plusieurs points geo par rubrique, patatras cela ne fonctionne plus<small class="fine d-inline"> </small>! normalement. <br class="autobr"> Comment adapter tout ceci pour que cela fonctionne avec plusieurs points geo par rubriques ( ou articles) <br class="autobr"> Pas faute d'avoir essayé, je n'ai pas trouvé de solution<br class="autobr"> Merci d'avance</p> <p>Cordialement</p> GIS : légende par mots clés 2019-12-07T13:59:25Z https://files.spip.net/GIS-legende-par-mots-cles#comment503268 2019-12-07T13:59:25Z <p>Merci d'avoir pris le temps de me répondre avec ces explications, cela fonctionne maintenant.</p> <p>Je peux passer à l'étape suivante de mon projet<small class="fine d-inline"> </small>!<small class="fine d-inline"> </small>;-)</p> <p>Cordialement</p> GIS : légende par mots clés 2019-12-07T11:50:31Z https://files.spip.net/GIS-legende-par-mots-cles#comment503267 2019-12-07T11:50:31Z <p><code class="spip_code spip_code_inline" dir="ltr"> <BOUCLE_gis(GIS){id_mot IN #ENV{mots}}{autre ...}{","}> </code><br class="autobr"> le critère « autre ... » ne doit pas exister … . <br class="autobr"> Ensuite, vous appliquez le même critère « id_mot IN #ENV[mots] » aux boucles _art(ARTICLES) et _gis(GIS), c'est redondant (même si ça ne devrait pas gêner si les mots clés sont bien affectés aux 2, mais quel intérêt alors<small class="fine d-inline"> </small>?)<br class="autobr"> Enfin de là, de ce choix, est-ce bien id_gis=#_gis:ID_GIS le bon critère pour BOUCLE_mot(MOTS) <br class="autobr"> (dans mon exemple les mots sont liés aux rubriques, si pour vous ils sont liés aux articles, cela devrait être id_article=#_art:ID_ARTICLE, s'ils sont bien liés aux point GIS a priori ça devrait être ok en supprimant id_mot IN #ENV<i>mots</i> de la BOUCLE_art(ARTICLES).</p> <p>En espérant que ça vous aiguille sur la solution (je m'excuse pas avance je n'aurai plus guère le temps de répondre cette semaine)</p> GIS : légende par mots clés 2019-12-07T09:02:49Z https://files.spip.net/GIS-legende-par-mots-cles#comment503257 2019-12-07T09:02:49Z <p>Bonjour, et surtout merci pour cette contribution<small class="fine d-inline"> </small>!</p> <p>Voilà, ma carte fonctionne , j'ai bien mes points géo avec mots clés associés.<br class="autobr"> Pourtant à l'affichage de ma carte mes points n'apparaissent pas .<br class="autobr"> Même quand je clique sur la légende ( formulaire qui lui fonctionne).</p> <p>Je vous mets ici mon json qui semble le coupable...</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><BOUCLE_art(ARTICLES){gis}{id_mot IN #ENV{mots}}{","}> <BOUCLE_gis(GIS){id_mot IN #ENV{mots}}{autre ...}{","}> {"type": "Feature", "geometry": {"type": "Point", "coordinates": [#LON, #LAT]}, "id":"#ID_GIS", "properties": { "description": [(#DESCRIPTIF|sinon{#_art:INTRODUCTION}|textebrut|concat{... <a href="#_art:URL_ARTICLE">En savoir plus</a>}|replace{"'","\'"}|json_encode)][(#SET{logo_doc,''})] <BOUCLE_mot(MOTS){id_gis=#_gis:ID_GIS}{id_groupe=1}{par hasard}{0,1}>[(#SET{logo_doc,#LOGO_MOT|image_passe_partout{32,32}})] </BOUCLE_mot> [(#GET{logo_doc}|oui) #SET{icon_w,#GET{logo_doc}|extraire_attribut{src}|largeur} #SET{icon_h,#GET{logo_doc}|extraire_attribut{src}|hauteur} [,"icon": (#GET{logo_doc}|extraire_attribut{src}|url_absolue|json_encode)], "icon_size": \[[(#GET{icon_w})],[(#GET{icon_h})]\], "icon_anchor": \[[(#GET{icon_w}|div{2})],[(#GET{icon_h})]\], "popup_anchor": \[1,[-(#GET{icon_h}|div{1.2})]\]] }} </BOUCLE_gis> </BOUCLE_art></code></pre></div> <p>Si un spiper pouvait m'aider car je patauge depuis longtemps là dessus...!</p> <p>Merci<br class="autobr"> Cordialement</p> GIS : légende par mots clés 2019-01-06T18:59:44Z https://files.spip.net/GIS-legende-par-mots-cles#comment499327 2019-01-06T18:59:44Z <p>Mais oui on peut associer des mots clé à un point géolocalisé<small class="fine d-inline"> </small>! <br class="autobr"> Dans ce cas je pense que vous pouvez vous en tirez autrement, surtout si, au vu de votre remarque, vos mots clés (du groupe 7) n'ont pas d'intérêts à être liés aux articles. <br class="autobr"> Peut être alors simplement pour gis_motslegende.html :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><BOUCLE_gis(GIS){id_mot IN #ENV{mots}}{autre ...}{","}> {"type": "Feature", etc.</code></pre></div> GIS : légende par mots clés 2019-01-05T21:28:25Z https://files.spip.net/GIS-legende-par-mots-cles#comment499324 2019-01-05T21:28:25Z <p>Bonsoir, <br class="autobr"> En effet je confirme on peut associer des mots clé à un point géolocalisé, il suffit que le groupe de mots clés l'autorise (modifier un groupe de mots clés puis « Les mots-clés de ce groupe peuvent être associés — cocher points géolocalisés »</p> <p>C'est donc ce que j'avais fait. J'ai donc modifier pour l'associer non pas au point mais à l'article et cela fonctionne.<br class="autobr"> Je vais finir le toilettage CSS et je reviens vers vous pour vous donner le lien de la carte. Merci pour l'aide en tout cas.<br class="autobr"> <i>Remarque </i> : Parfois on aimerait avoir un point géolocaliser sans article derrière juste pour situer un bâtiment avec les infos du points géolocalisés.</p> <p>Bonne soirée</p> GIS : légende par mots clés 2019-01-05T21:11:43Z https://files.spip.net/GIS-legende-par-mots-cles#comment499323 2019-01-05T21:11:43Z <blockquote class="spip"> <p>J'ai des articles ayant des point GIS. Ces points GIS sont associés à un mot clé (du groupe 7) et chaque mot clé à un logo (marqueur).</p> </blockquote> <p>Dans mon exemple si vous le suivez à la lettre en remplaçant rubrique par article, ce sont les articles qui sont associés à un mot clé, et ce sont les articles qui sont affichés sur la carte ...<br class="autobr"> Vous dites associer les points GIS à un mot clé<small class="fine d-inline"> </small>? c'est possible<small class="fine d-inline"> </small>? pas dans « mon » spip ...<br class="autobr"> Si c'est votre clavier qu'a fourché, et que c'est bien vos articles qui ont un mot clé (du groupe 7, avec logo, servant de marqueur), euh... : <br>- vérifier que #ENV<i>mots</i> est bien présent : /spip.php<small class="fine d-inline"> </small>?articleX&var_mode=debugvar_mode=debug <br>- commencer par tester le formulaire en affichant simplement la liste des articles ayant le(s) mot(s) clé(s) sélectionné(s) <br>- ...</p> GIS : légende par mots clés 2019-01-05T17:26:53Z https://files.spip.net/GIS-legende-par-mots-cles#comment499316 2019-01-05T17:26:53Z <p>Bonjour, Volontiers pour le lien pour un deuxième exemple lorsque j'y serai arrivé<small class="fine d-inline"> </small>;-)<br class="autobr"> Voilà où j'en suis : <br class="autobr"> J'ai des articles ayant des point GIS. Ces points GIS sont associés à un mot clé (du groupe 7) et chaque mot clé à un logo (marqueur).</p> <p>J'ai créé le formulaire, déposé dans le dossier /formulaires de mon squelette</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><div class="formulaire_spip formulaire_aform" id="formulaire_aform"> <form method="post" action="#ENV{action}"> #ACTION_FORMULAIRE <div class="editer-groupe"> <BOUCLE_motsgeo(MOTS){id_groupe=7}{" "}> <div class="editer editer_checkbox"> <input type="checkbox" name="mots[]" id="mot#ID_MOT" value="#ID_MOT"[(#ENV{mots}|find{#ID_MOT}|oui) checked="checked"] onchange="this.form.submit();" /> <label class="checkbox-inline" for="mot#ID_MOT">#LOGO_MOT #TITRE</label> </div> [(#SET{choixcouleur,[(#ENV{mots, #ARRAY{}}|push{#ID_MOT})]})] </BOUCLE_motsgeo> </div> </form> </div></code></pre></div> <p>J'ai créé le fichier gismotslegende.php que j'ai déposé dans le même dossier squelettes/formulaires</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code><?php function formulaires_gismotslegende_charger_dist(){ $valeurs = array('mots'=>_request('mots'),); return $valeurs; } function formulaires_gismotslegende_verifier_dist(){ $erreurs = array(); } function formulaires_gismotslegende_traiter_dist(){ $res = array(); $mots[] = _request('mots[]'); return $res; } ?></code></pre></div> <p>Enfin j'ai créé et adapté à une boucle article le fichier gis_motslegende.html dans /squelettes/json</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><BOUCLE_art(ARTICLES){gis}{id_mot IN #ENV{mots}}{","}> <BOUCLE_gis(GIS){id_article}> {"type": "Feature", "geometry": {"type": "Point", "coordinates": [#LON, #LAT]}, "id":"#ID_GIS", "properties": { "description": [(#DESCRIPTIF|sinon{#_art:INTRODUCTION}|textebrut|concat{... <a href="#_art:URL_ARTICLE">En savoir plus</a>}|replace{"'","\'"}|json_encode)][(#SET{logo_doc,''})] <BOUCLE_mot(MOTS){id_article=#_art:ID_ARTICLE}{id_groupe=7}{par hasard}{0,1}>[(#SET{logo_doc,#LOGO_MOT|image_passe_partout{32,32}})]</BOUCLE_mot> [(#GET{logo_doc}|oui) #SET{icon_w,#GET{logo_doc}|extraire_attribut{src}|largeur} #SET{icon_h,#GET{logo_doc}|extraire_attribut{src}|hauteur} [,"icon": (#GET{logo_doc}|extraire_attribut{src}|url_absolue|json_encode)], "icon_size": \[[(#GET{icon_w})],[(#GET{icon_h})]\], "icon_anchor": \[[(#GET{icon_w}|div{2})],[(#GET{icon_h})]\], "popup_anchor": \[1,[-(#GET{icon_h}|div{1.2})]\]] }} </BOUCLE_gis> </BOUCLE_art></code></pre></div> <p>Dans mon squelette, j'ai intégré les deux lignes suivantes</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>[(#FORMULAIRE_GISMOTSLEGENDE)] [(#MODELE{carte_gis,objets=motslegende,mots=#ENV{mots}})]</code></pre></div> <p>J'ai bien le formulaire qui apparaît et la carte toutefois, je n'ai rien sur la carte même lorsque je sélectionne un élément de la légende<small class="fine d-inline"> </small>?</p> <p>Auiez-vous une idée<small class="fine d-inline"> </small>?<br class="autobr"> Merci pour votre aide</p> GIS : légende par mots clés 2019-01-05T13:10:54Z https://files.spip.net/GIS-legende-par-mots-cles#comment499305 2019-01-05T13:10:54Z <p>oui... la phrase est ambiguë (je devrais peut être plutôt écrire « Il faut donc créer un nouveau paramètre objet ... »)<br class="autobr"> C'est gis_motslegende.html qui crée l'objet à partir du moment où celui ci existe. Cet objet c'est un point GIS d'une rubrique (ou autre objet en modifiant le code) ayant un mot clé ayant un logo.<br class="autobr"> Vous n'avez donc qu'à créer les points GIS.</p> <p>(Quand vous aurez fini si vous pouvez mettre un lien qu'on ait un autre exemple)</p> GIS : légende par mots clés 2019-01-05T13:07:33Z https://files.spip.net/GIS-legende-par-mots-cles#comment499304 2019-01-05T13:07:33Z <p>oui... la phrase est ambiguë (je devrais peut être plutôt écrire « Il faut donc créer un nouveau paramètre objet ... »)<br class="autobr"> C'est gis_motslegende.html qui crée l'objet à partir du moment où celui ci existe. Cet objet c'est un point GIS d'une rubrique (ou autre objet en modifiant le code) ayant un mot clé ayant un logo.<br class="autobr"> Vous n'avez donc qu'à créer les points GIS.</p> GIS : légende par mots clés 2019-01-05T12:37:14Z https://files.spip.net/GIS-legende-par-mots-cles#comment499302 2019-01-05T12:37:14Z <p>Bonjour et merci...je cherchais cela depuis un moment.<br class="autobr"> Je bloque juste sur ce passage : <br class="autobr"> «<small class="fine d-inline"> </small>Il faut donc créer un nouvel objet, appelons le «<small class="fine d-inline"> </small>motslegende<small class="fine d-inline"> </small>», et le modèles appelant, gis_motslegende.html , à enregistrer dans le dossier json de vos squelettes :»<br class="autobr"> J'ai copié le code et créé le fichier gis_motslegende.html déposé dans le dossier json de mon squelette. Mais par contre, pouvez-vous me préciser les actions de création d'un objet motlegende... car là je sèche.<br class="autobr"> Merci d'avance<br class="autobr"> Jérôme<br class="autobr"> PS : Bonne année</p> GIS : légende par mots clés 2018-09-27T16:48:21Z https://files.spip.net/GIS-legende-par-mots-cles#comment498274 2018-09-27T16:48:21Z <p>bonjour,</p> <p>superbe article.<br class="autobr"> il serait bien que les admin de spip-contrib créent un mot-clé « contribution pédagogique », pour retrouver d'un lien ce genre d'articles.</p> <p>merci.</p>