Carnet Wiki

Astuces GIS

Version 3 — Novembre 2012 — 82.247.xx.xx

Quelques astuces pour GIS qui à terme seront déplacées dans un article de la rubrique du plugin.

Définir le logo des points avec des mots clés

Depuis GIS v2 on peut ajouter un logo aux points. Dans la v1 du plugin il existait une astuce qui permettait de définir le logo des points à partir du logo des mots clés d’un groupe spécifique. Pour les nostalgiques, il est toujours possible d’obtenir le même résultat en procédant comme expliqué ci-dessous.

1) créez un groupe de mots-clés nommé marker_icon et attribuez un logo aux mots-clés de ce groupe.

2) attachez un mot de ce groupe aux articles liés à vos points.

3) créez un squelette JSON personnalisé nommé gis_articles_logomot avec le contenu suivant :

<BOUCLE_art(ARTICLES){gis}{id_article ?}{id_rubrique ?}{id_secteur ?}{id_mot ?}{id_auteur ?}{recherche ?}{0, #ENV{limit}}{","}>
{"type": "Feature",
"geometry": {"type": "Point", "coordinates": [#LON, #LAT]},
"id":"#ID_GIS",
"properties": {
	"title":[(#TITRE_GIS*|sinon{#TITRE*}|supprimer_numero|json_encode)],
	"description":[(#DESCRIPTIF_GIS|sinon{#DESCRIPTIF}|json_encode)][(#SET{logo_doc,''})]
	<BOUCLE_logomot(MOTS){id_article}{type=marker_icon}>[(#SET{logo_doc,#LOGO_MOT_NORMAL|image_passe_partout{32,32}|image_recadre{32,32}})]]</BOUCLE_logomot>
	[(#GET{logo_doc}|oui)
	#SET{icon_w,#GET{logo_doc}|extraire_attribut{src}|largeur}
	#SET{icon_h,#GET{logo_doc}|extraire_attribut{src}|hauteur}
	#SET{icon_anchorPoint,''}
	[,"icon": (#GET{logo_doc}|extraire_attribut{src}|url_absolue|json_encode)],
	"icon_size": [(#VAL{91}|chr)]#GET{icon_w},#GET{icon_h}[(#VAL{93}|chr)],
	"icon_anchor": [(#VAL{91}|chr)][(#GET{icon_w}|div{2})],[(#GET{icon_h})][(#VAL{93}|chr)]]
}}</BOUCLE_art>

4) utilisez le code suivant pour afficher une carte qui sera alimentée par votre squelette JSON personnalisé :

[(#INCLURE{fond=modeles/carte_gis,objets=articles_logomot})]

Et voilà :)

[2<-]

Permettre l’ajout d’une géolocalisation dans le formulaire public de modification d’événement

En partant de l’excellente contribution de mj
http://contrib.spip.net/Squelette-d-Agenda-grace-au-plugin-Agenda

J’ai fait évoluer le code de mod_evenement.html en y ajoutant ce bloc.

<div>
		#BLOC_TITRE
		<:localiser:>
		#BLOC_RESUME
		<BOUCLE_agenda_gis(GIS){id_evenement}>
			[(#INCLURE{fond=modeles/carte_gis_preview,id_objet=#ID_EVENEMENT,evenement})]
		</BOUCLE_agenda_gis>
		#BLOC_DEBUT
		[(#INCLURE{fond=prive/inclure/gis_objet_formulaires,objet=evenement,id_objet=#ID_EVENEMENT,ajax})]


#BLOC_FIN
	
</div>

Ce code doit figurer dans une boucle événement.

Pour le cas où l’id_evenement n’est pas encore défini, j’ai affiché un simple message signalant qu’il faut au préalable enregistre le nouvel évenement.

La boucle agenda_gis permet simplement de ne pas afficher de carte tant qu’il n’y a pas de point associé.

L’utilisation de des blocs dépliables n’est évidemment pas obligatoire (nécessite le couteau suisse) ; pour s’en passer, il suffit d’enlever toutes les balise commençant par #BLOC