Plugin Gis escoitar

Plugin pour l’intégration de Google Maps dans SPIP

Voici la documentation du plugin Gis, créé par l’équipe d’escoitar.org pour le système de publication pour internet SPIP. Sa traduction illustre aussi la bonne idée du multilinguisme SPIP comme source de création :)

Remarque importante

Attention, ce plugin utilise la version 2 de l’API Google Maps qui ne sera plus fonctionnelle à partir du 19 mai 2013. Pensez à migrer rapidement vers les versions plus récentes de GIS.

Présentation

Ce plugin, couplé au plugin Google Maps API permet d’afficher des cartes GoogleMaps sur les pages publiques du site. Les articles, les rubriques et les mots-clés du site peuvent être géolocalisés par des marqueurs sur les cartes. Un clic sur un marqueur permet d’afficher les informations de l’élément associé (titre et lien vers l’élément, chapo, logo, lecteur mp3).

Installation et paramétrage

Avant d’utiliser ce plugin, vous devez installer et configurer le plugin Google Maps API ou le plugin OpenLayers.

Ce plugin est développé pour une compatibilité avec SPIP 1.9.2 minimum avec le plugin CFG installé.

GIS (1.0.0)

Après avoir téléchargé l’archive sur votre disque dur, décompressez-la et déposez - via FTP - le dossier Gis dans le dossier plugins de votre site SPIP.

Une fois cette opération effectuée, rendez-vous dans l’espace privé de votre site et activez le plugin.

Avant de l’utiliser, vous devez configurer le plugin à l’aide du plugin CFG à l’adresse ecrire/?exec=cfg&cfg=gis.

Page de configuration CFG de GIS

Cette page permet de définir les options suivantes :

  • API de cartes à utiliser ;
  • portée du plugin GIS dans l’espace privé (toutes les rubriques ou seulement certaines d’entre elles) ;
  • désactivation du script swf_object si vous n’utilisez pas la fonctionnalité du lecteur mp3 dans les bulles d’informations ;
  • paramètres du formulaire public du plugin.

Publier des articles en utilisant GIS

Lors de l’affichage d’un article dans l’espace privé, cliquez le bouton Déplier.

Déplier la carte

Il faut cliquer sur la carte pour marquer un point à faire apparaître (une icône apparaît ainsi que des coordonnées placées en dessous). Puis enclencher le bouton actualiser, qui se trouve à côté des coordonnées.

Changer les coordonnées

On voit comment l’icône apparaît effectivement à cet endroit à chaque fois que l’on va sur l’article. Si l’on veut changer la localisation sur la carte, il faut recliquer sur Déplier et actualiser la position du marqueur.

La carte

Utilisation dans les squelettes et les articles

Pour insérer une carte dans un squelette, on se sert du modèle fourni par le plugin en insérant le code suivant à l’endroit où l’on souhaite afficher la carte :

[(#MODELE{carte_gis}{id_article}{id_rubrique}{id_mot}{id_auteur}
{recherche}{latit}{lonxit}{zoom=X}{type=xxx}{control=xxx})]

On peut aussi utiliser le modèle fourni par le plugin pour afficher une carte depuis le contenu d’un article. Pour cela, il suffit d’ajouter ce code dans le texte de votre article :

<carte_gis1|id_article=9|zoom=X|type=xxx|control=XXX>

Il est possible d’afficher plusieurs cartes sur la même page. Pour cela il faut bien faire attention à incrémenter le numéro d’identification du modèle comme ceci :

<carte_gis1|id_article=9|zoom=X|type=xxx|control=XXX>
<carte_gis2|id_article=10|zoom=X|type=xxx|control=XXX>

Lire la documentation à propos des modèles sur spip.net.

Paramètres du modèle

Si on n’inclut pas le modèle dans un contexte, la carte affichera tous les articles du site. Si on l’inclut dans un contexte (dans une boucle rubrique par exemple) ou en posant un numéro dans les paramètres de l’inclusion précédente comme ceci : {id_rubrique=1}, la carte affichera les articles du contexte ; ici ceux de la rubrique 1.

On peut afficher tous les articles d’un secteur en passant le paramètre {id_secteur} au modèle. Dans ce cas, si on tente aussi de passer le paramètre {id_rubrique} celui-ci ne sera pas pris en compte par le modèle.

On peut aussi afficher le marqueur d’un seul article en passant le paramètre {id_article=X} au modèle (où X correspond au numéro de l’article à afficher).

Les paramètres {zoom}, {latit} et {lonxit} permettent de gérer la zone affichée par la carte :

  • zoom comme son nom l’indique permet de spécifier le niveau de zoom de la carte (de 0 à 13).
  • latit permet de spécifier la latitude du point central de la carte.
  • lonxit permet de spécifier la longitude du point central de la carte.

Le paramètre {type=xxx} permet de définir le type de carte à afficher. Il est optionnel et peut prendre plusieurs valeurs :

  • satellite (valeur par défaut si le paramètre n’est pas défini)
  • carte
  • hybride
  • physique (pour afficher la carte de relief)

Le paramètre {control=xxx} permet de choisir l’apparence des boutons de contrôle de la carte. Il est optionnel et peut prendre les valeurs suivantes :

  • custom pour afficher des boutons personnalisés
  • large pour afficher les boutons par défaut de google maps
  • small pour afficher les petits boutons de google maps

Le paramètre {control_type=non} permet d’empêcher l’affichage des boutons de changement de type de carte.

Le paramètre {control_type=complet} permet d’afficher tous les boutons de changement de type de carte (Plan, Satellite, Mixte et Relief).

Le paramètre {recursive=1} permet d’afficher les articles de la rubrique en cours ainsi que ceux de toutes ses sous-rubriques.

Le paramètre {limit=xxx} permet de limiter le nombre de marqueurs à afficher sur la carte (valeur par défaut 50).

Le paramètre {attente=1} accompagne indirectement le paramètre limit et permet d’afficher une roue d’attente tant que la carte et tous ses points ne sont pas intégralement affichés. Particulièrement utile sur les cartes avec un grand nombre de points et des temps de chargements dépassant les 10, 20 secondes... Permet de rassurer l’utilisateur ! ;-)

Le paramètre {ombre=0} permet de désactiver l’affichage des ombres de marqueurs. Ce paramètre peu s’avérer utile sur les cartes denses en évitant que les ombres ne polluent encore plus un visuel déjà chargé.

Les paramètres {width=xx} et {height=xx} permettent de spécifier les dimensions de la carte à condition que le paramètre {style=non} ne soit pas passé au modèle. Les valeurs par défaut sont 100% pour width et 400px pour height.

Le paramètre {style=non} permet de désactiver les styles appliqués à la div qui contient la carte. Ainsi vous pouvez styler cette div depuis vos propres feuilles de styles.

Le paramètre {zoom_molette=non} permet de désactiver la fonctionnalité du zoom à l’aide de la molette de la souris. Celle-ci est active par défaut.

Le paramètre {id_a_ouvrir=XX} permet d’afficher la bulle d’information du marqueur dont l’id_article est XX lors du chargement de la carte (utilise la fonction abrirVentana présentée ci-dessous).

Contenu des bulles d’information

La bulle qui apparait sur la carte, lorsque l’on clique sur un marqueur, fera apparaître le chapo de l’article, #CHAPO, ainsi que la première image que l’on chargera en document de l’article, et un lecteur mp3 si l’on a attaché un document mp3 à cet article.

Bulle

Balises et boucles du plugin

On crée une boucle GIS pour récupérer les coordonnées de localisation de l’article en cours ; les balises #LAT et #LONX permettent d’afficher les coordonnées de l’article.

Exemple de boucle gis :

<BOUCLE_centrado(GIS){id_article}>
#LAT
#LONX
</BOUCLE_centrado>

Astuces

Centrer la carte sur l’article en cours

Pour centrer la carte sur l’article en cours, vous devez d’abord inclure le modèle du plugin dans votre squelette article.html (ou article-x.html si vous voulez restreindre cette modification au secteur numéro x).

Depuis votre squelette rubrique-x.html, dans les liens pointant sur chaque article, ajoutez le code suivant :

<BOUCLE_articles(ARTICLES){id_rubrique}>
<BOUCLE_centrado(GIS){id_article}>
<a href="[(#URL_ARTICLE)&zoom=16[&latit=(#LAT)]
[&lonxit=(#LONX)]]">#TITRE</a>
</BOUCLE_centrado>
</BOUCLE_articles>

La boucle GIS permet de récupérer les coordonnées de chaque article et de les transmettre à la carte du squelette article-x.html en les passant dans l’url.

Ouverture d’une bulle d’information depuis un lien

On peut ouvrir les bulles d’information depuis des liens situés à l’extérieur de la carte. Pour faire cela, il suffit de créer une boucle comme la suivante :

<BOUCLE_articles_map(ARTICLES) {par date}{inverse}{0,20}>
<a href="javascript:abrirVentana([(#ID_ARTICLE)],1)">[(#TITRE)]</a>
</BOUCLE_articles_map>

Dans cet exemple le chiffre 1 correspond à l’id de la carte dans laquelle on veut ouvrir les bulles.

Zoomer sur un point de la carte depuis un lien

On peut zoomer sur un point de la carte depuis un lien situé à l’extérieur (ou dans le descriptif d’un marqueur...) en utilisant la fonction javascript zoomIci. Exemple :

<a href="javascript:zoomIci(XX, YY, 16, 1);">Zoomer sur le Truc</a>

Les paramètres sont les suivants :

  • XX latitude
  • YY longitude
  • 16 le facteur de zoom
  • 1 l’id de la carte

Personnalisation des marqueurs

Il est possible de personnaliser l’apparence des marqueurs présents sur la carte : créez un groupe de mots-clés nommé marker_icon et attribuez un logo aux mots-clés de ce groupe.

Personnaliser les marqueurs

Remarque : l’image doit être aux mêmes dimensions que les marqueurs d’origine (20 pixels de large et 34 pixels de haut) et enregistrée au format png transparent.

Ensuite lorsqu’on attache un mot-clé de ce groupe à un article ou une rubrique, le logo du mot-clé est bien affiché sur la carte à la place du marqueur par défaut.

Carte avec marqueurs personnalisés

Superposition de fichiers KML

Vous pouvez joindre un fichier kml à vos articles ou rubriques et le contenu de celui-ci sera affiché en superposition de la carte. Pour cela, il faut afficher une carte à l’aide du modèle du plugin en lui passant l’id_article ou l’id_rubrique correspondant à l’élément qui comporte le fichier kml en document joint.

Attention : Il faut utiliser la version 2 ou « current version » de l’API de GoogleMaps pour que la superposition de KML fonctionne. Vous pouvez choisir la version de l’API depuis la page de configuration du plugin Google Maps API.

Pour générer ce type de fichier, vous pouvez utiliser le site de google maps et cliquer sur l’onglet mes cartes. Après avoir dessiné les tracés sur votre carte, il faut cliquer sur le lien KML (en haut au-dessus de la carte) pour télécharger le fichier.

Geocoding

La page de configuration du plugin permet d’activer l’option de geocoding (ou plus précisément de « reverse geocoding »). Cette option, uniquement disponible avec l’API de Google Maps, permet de récupérer l’adresse des points placés sur vos cartes.

Geocoding dans GIS

Une fois activée, l’option ajoute deux champs dans le formulaire de GIS (Pays et Ville). Lorsque vous positionnez un point sur la carte les informations d’adresse de celui-ci sont ajouté dans ces champs. Il se peut que ces informations soient erronées, le geocoding n’est pas « une science exacte ».

Dans vos squelettes, vous bénéficiez des nouvelles balises suivantes pour les boucles GIS :

  • #PAYS
  • #CODE_PAYS
  • #REGION
  • #VILLE
  • #CODE_POSTAL

Ainsi on pourra écrire :

<BOUCLE_centrer(GIS){id_article}>
[<div class="adr">
	<span class="country-name">(#PAYS)</span>[, 
	<span class="region">(#REGION)</span>][, 
	<span class="locality">(#VILLE)</span>]
</div>]
</BOUCLE_centrer>

Auteurs du plugin :

-  Horacio González
-  Berio Molina

Traductions de l’interface

L’interface est traduite à ce jour en :
-  galicien
-  espagnol
-  français

Traduction (amendable) depuis le galicien : Pascale

Le code est actuellement dans la Zone dans le dossier _plugins_/gis/.

Important : si vous souhaitez qu’on puisse vous aider lorsque vous postez dans le forum de cet article pensez à fournir un lien vers le site en question sans quoi il nous sera impossible de vous dépanner.

Discussion

296 discussions

  • 4

    Bonjour,

    euuh, je sais, j’ai mis trop de messages sorry !!

    j’ai une rubrique ville avec des sous rubriques dont les noms sont des établissement. chacun contient plusieurs articles avec un article plan.

    y-a-t-il moyen d’afficher ces plans dans la même carte en fournissant le nom de la rubrique ville (parce qu’il y a rubriques ville :

    rabat —>établissement1—>plan1
    ....—>établissement2—>plan2
    ....—>...
    casa —>établissement3—>plan3
    .... —>établissement4—>plan4
    .... —>...
    ...

    je veux afficher plan1, plan2...dans la même carte !

    Merci.

    • Bonjour,

      D’après ce que je vois tu as réussi à résoudre les problèmes de tes trois messages précédents. Peux-tu y répondre pour l’indiquer afin que les gens ne prennent pas la peine de rédiger une réponse pour un problème résolu ?

      Pour afficher les articles de la rubrique X dans un squelette il suffit de faire ce qui est indiqué dans cet article de documentation :

      [(#MODELE{carte_gis}{id_rubrique=X})]

      ++

    • salut,

      pour les solutions, en fait, j’ai pas encore trouvé, sinon je les aurais postées ici pour aider tout le monde.
      la table manquante je l’ai simplement copié à partir d’un autre site où j’ai déjà installé le plugin Giscoitar.

      quant à la mise à jour, j’ai supprimé le plugin et réinstallé, mais comme j’ai dis les anciennes données ont perdues. enfin peut être que j’ai fait une mauvaise manip. alors, je crois qu’il faut juste désactiver le plugin et supprimer les fichiers et installer le nouveau, mais je n’en suis pas sûr.

      alors pour le post ci-dessus, je veux afficher les articles des sous-rubriques d’une rubrique.

      je voulais faire la modif moi même dans carte_gis mais je trouve pas un certain inc_public_map ?!!

      Merci

    • Re Bonjour,

      Quelques pixels plus haut on peut lire ceci :)

      Le paramètre recursive=1 permet d’afficher les articles de la rubrique en cours ainsi que ceux de ses sous-rubriques.

      Pour la mise à jour c’est normal que tu aies perdu tes tables si tu as cliqué sur le bouton Effacer.

      je crois qu’il faut juste désactiver le plugin et supprimer les fichiers et installer le nouveau, mais je n’en suis pas sûr.

      Oui voilà c’est comme ça qu’il faut le faire.

      ++

    • Re bonjour b_b,

      j’ai lu et relu l’article, j’ai carrément loupé ce recursive=1 ;-) Merci

      pour la mise à jour, c’est ce que j’ai fait au début, mais ça me donnais une erreur—> plugin errata c’est pourquoi j’ai du effacer tout.

      je vais quand même revoir ça, j’ai peut être encore loupé qlq chose.

    Répondre à ce message

  • Bonjour,

    j’ai voulu tester le plugin dans un nouveau site spip192c. l’installation et la configuration passe bien, mais lorsque je veux visualiser la carte, ça m’affiche que la table gis n’existe pas.

    effectivement dans phpmyadmin, elle y est pas !!! le plugin ne crée pas la table lors de l’installation ou j’ai raté quelques chose ?

    Merci beaucoup.

    Répondre à ce message

  • Bonjour,

    comment faire pour mettre à jour le plugin ?
    j’ai installé la version 0.2 dans un site sous spip1.9.2. et quand j’ai voulu tester le plugin avec les nouvelles modifications, ça a créé des bug. j’ai du supprimer les anciennes tables et fichiers du plugin et réinstaller ce dernier.

    or c’est pas vraiment pratique comme méthode, surtout que les données sont perdues !!!

    Ps : j’ai juste fait un teste en local j’ai pas fait de modif sur le serveur sinon :-)

    Merci beaucoup.

    Répondre à ce message

  • Bonjour,

    comment faire pour mettre à jour le plugin ?
    j’ai installé ma version 0.2 dans un site sous spip1.9.2. et quand j’ai voulu tester le plugin avec les nouvelles modifications, ça a créé des bug. j’ai du supprimer les tables et fichiers du plugin et réinstaller ce dernier.

    or c’est pas vraiment pratique comme méthode, surtout que les données sont perdues !!!

    Ps : j’ai juste fait un teste en local j’ai pas fait de modif sur le serveur sinon :-)

    Merci beaucoup.

    Répondre à ce message

  • bonjour,
    a quel endroit du squelette rubrique-x.html faut il intégrer le code permettant de centrer la carte sur l’article en cours ? sachant que l’appel de la carte se fait avec la syntaxe suivante :

    [(#MODELEcarte_gisid_rubrique=1recherchelatitlonxitzoom=8type=cartecontrol=small)]

    merci

    jacques

    Répondre à ce message

  • 5

    Bonjour,

    Quelle boucle doit-on écrire pour mettre plusieurs marqueur sur une même carte ??

    A+

    • Pour l’instant j’ai ces boucles qui m’affiche la carte avec mes 3 marqueurs correspondant à mes 3 articles mais elle engendre 3 espaces carte vide. Normal vu les boucles mais dès que je veux simplifier le code les 3 marqueurs ne s’affichent plus donc big problème !!!!!!

      <BOUCLE_rubrique_principal(RUBRIQUES){id_rubrique}>
       <BOUCLE_articles(ARTICLES){id_rubrique}>
        <BOUCLE_cent(GIS){id_article}>
        #ID_ARTICLE
         [(#MODELE{carte_gis}{id_mot}{control=large})]
      </BOUCLE_cent>
        </BOUCLE_articles>
        test
         [(#MODELE{carte_gis}{id_rubrique}{id_mot}{latit}{lonxit}{control=large})]
       </BOUCLE_rubrique_principal>

      Un petit coup de paluche serait le bienvenue car je galère grave.

    • Bonjour,

      Comme indiqué dans la documentation ci-dessus voici le genre de code à insérer dans un squelette pour afficher les articles de la rubrique 3 par exemple :

      [(#MODELE{carte_gis}{id_rubrique=3})]

      Rien de plus...

    • Merci pour ta réponse.

      Avec ce modèle, j’ai bien une carte qui s’affiche mais pas les marqueurs donc mon problème reste.

      Je suis donc toujours dans l’impase.

    • J’utilise le plugin sarka et lorsque je vire la ligne   <INCLURE{fond=noisettes/header}{id_rubrique}>
      les cartes ne s’affiche plus.
      Comment modifier le fichier header de sarka pour qu’il reste compatible avec votreplugin ?

    • Après réinstallation du plugin la totalité des fonctions sont activent.

      J’avais copier coller le dossier gis par inadvertance à la racine de spip ce qui a créer de nombreuse interférence.

      Merci pour ton aide.

    Répondre à ce message

  • 1

    Bonjour...

    d’abord ! félélicitation ! super plugin aucun bug constaté avec spip1.9.2d
    mais j’ai quelques petites questions :

    -  comment faire pour que la carte soit plier par défaut dans l’admin ?
    -  comment modifier les infos bulles, je voudrai virer les auteurs, la date et mettre un petit lien ’en savoir plus’ qui pointe vers les articles...

    merci d’avance et encore bravo !

    • Bonjour


      -  comment modifier les infos bulles, je voudrai virer les auteurs, la date et mettre un petit lien ’en savoir plus’ qui pointe vers les articles...

      Il faut modifier le fichier /plugins/gis/rss-gis.html

      A partir de la ligne 26 <description>, il décrit le contenu de l’info bulle.

      Cordialement

    Répondre à ce message

  • 2
    clement

    Bonjour, merci pour ce plugin que je viens d’installer sur un spip 1.9.2d.

    Mais je rencontre différents problèmes.
    Quand je souhaite attribuer des coordonnées à un article, je clique sur actualiser et cela recharge une mauvais URL : /ecrire/ ?exec=articles&&id_articles=1
    au lieu de
    /ecrire/ ?exec=articles&id_article=1.

    J’ai regardé le code du plugin et le problème vient de la variable $pkey qui vaut id_articles et non id_article.

    Cette erreur ce reporte également sur l’insertion en base, car dans la table spip_gis la colonne id_articles n’existe pas, il s’agit de id_article.

    Je n’ai pas tester pour les rubriques mais il se peut qu’il y ait le meme problème.

    Répondre à ce message

  • Pierre-Jean

    Bonjour, j’aurais besoin d’un petit coup de pouce... >

    Les deux plugins sont installés et configurer. Et lorsque je suis dans la partie privé sur un article et que je veux cliquer sur la petite fleche afin de déplier le menu de Gis : rien ne se passe (FF), le naviguateur plante (msie7)
    A savoir que l’orsque la page n’a pas totalement finie de charger on a tout juste le temps de voir qu’une carte s’affiche bien (le menu de gis est déplié pendant une seconde). Puis la seconde d’après on en revient au début...

    J’avais tenté d’installer Gis et l’api GGMAP sous un 1.9.2c, et j’avais la même erreur que maintenant (1.9.2.d).

    Incompatibilité avec d’autres plugin installés peut-être ?

    Répondre à ce message

  • 18

    Bon, maintenant j’arrive à afficher des cartes, mais toujours pas à y mettre des marqueurs.

    Pour le moment je ne touche pas aux squelettes, j’insère juste la carte via le modèle . Je ne lui passe pas de contexte (pas d’id_article), il devrait donc tout récupérer, en principe.

    Or.. il ne se passe rien.

    si on regarde mon site :

    -  la carte se trouve sur l’article 232, http://jfmoyen.free.fr/spip.php?article232
    Cet article contient lui-même un marqueur (mais n’en contiendrait-il pas que ça ne changerait rien, j’ai testé). La carte est appelée par <carte_gis1|zoom=8|type=hybride>

    -  L’article 233 (de la même rubrique, et pour laquelle j’ai activé le plugin via config) contient un marqueur, qui habite à -33.92, 18.85 (c’est Stellenbosch, à peu près au milieu de la carte) ; mais il n’affiche pas de carte.

    Je viens de regarder via phpmyadmin ; j’ai des tables spip_gis et spip_gis_mot (qui est vide d’ailleurs). Dans spip_gis, j’ai les choses suivantes

    id_gis id_article lat lonx

    3 233 -33.9206 18.8525

    4 232 -34.0663 18.8223

    (et je laisse de coté les deux premières lignes, qui sont celles des deux premiers articles que j’ai essayé de créer avant de les effacer).

    Ca m’a donc l’air bon.

    Mais la carte de l’article 232 ne montre aucun marqueur...

    La seule piste que j’ai est un gros message d’erreur js (je le stocke dans un coin à toutes fins utiles, mais je pense que c’est reproductile par nimporte quel visiteur doté d’un firefox ou Opera...) qui me dit que

    JavaScript - http://jfmoyen.free.fr/spip.php?article232&var_mode=calcul
    Event thread: DOMContentLoaded
    Error:
    name: TypeError
    message: Statement on line 46: Type mismatch (usually non-object value supplied where object required)

    Suivi de 20 lignes de backtrace...

    Je veux bien un p’tit coup de main !

    • Bon d’accord, ça commence bien, self-reply immédiate.

      La première partie des erreurs js vient de la même origine que l’autre jour, jQuery/prototype, et elles disparaissent tout pareil si on remplace $ par jquery aux lignes 61, 63 et 66 de inc-gis_map.html

      Ce qui m’a permis de voir, tout en bas de la pile, une autre erreur qui dit que

      Statement on line 3: Undefined variable: Gunload
      Backtrace:
        Line 3 of inline#1 script in http://jfmoyen.free.fr/spip.php?article232
                          	Gunload();
        ...  Line 822 of linked script http://jfmoyen.free.fr/spip.php?page=jquery.js
          args[0].handler=c[j];args[0].data=c[j].data;if (c[j].apply(this,args)===false){event.preventDefault();event.stopPropagation();returnValue=false;}}
        ...
      stacktrace:   ...  Line 822 of linked script http://jfmoyen.free.fr/spip.php?page=jquery.js
          args[0].handler=c[j];args[0].data=c[j].data;if (c[j].apply(this,args)===false){event.preventDefault();event.stopPropagation();returnValue=false;}}
        

      .. et toujours pas de marqueurs.

    • Bonjour,

      J’ai aussi corrigé ça dans le plugin il y a quelques jours :

      Dans l’entête : http://trac.rezo.net/trac/spip-zone/changeset/20470

      Et dans le modèle : http://trac.rezo.net/trac/spip-zone/changeset/20471

      Par contre je ne vois pas pourquoi cela ne fonctionne pas chez toi (pas d’erreur js signalée par firebug et ton flux rss-gis semble ok aussi). Après avoir testé le truc sur un site de test je ne peux malheureusement que te dire : « ça marche chez moi » :s

      Bon courage ++

    • Hmm, je sais pas, mon flux rss a l’air bizarre (enfin, ce n’est pas très facile de le voir... mais quand j’en édite la source, il me semble qu’il me donne bien un <channel> mais pas d’<item> ! Ou est-ce juste Opera qui ne sait pas me montrer le contenu du flux ? Comment faire pour regarder ce qui est vraiment diffusé ?

      Sinon, j’ai trouvé un autre $ dans js/gis.js à la ligne 2 :

      function coordenadas (articulo){
      $.ajax({
      		type: "POST",
      (...)

      Je sais pas si ça peut causer le même conflit ?

    • Bien, après avoir un peu expérimenté mon problème semble habiter dans ce bloc (de inc-gis_map) :

      jQuery.get('http://jfmoyen.free.fr/spip.php?page=rss-gis', {limit:50}, function(xml1){
      			
      //xml almacena en un objeto xml los datos recogidos del documento leido
      	document.write("Got data");
          	jQuery("item", xml1).each(function(item1){
          			var xmlItem1 = xml1.documentElement.getElementsByTagName("item")[item1];
          			agregarMarcador(xmlItem1,1,0,17,markerManager1);
      			});
      	markerManager1.refresh();
       });

      J’ai rajouté un flag dans la fonction xml1 ; ce flag n’apparâit pas, c’est à dire que la fonction n’est pas executée... je suppose ?

      En mettant des flags juste avant et juste après le jQuery.get, on les voit — on passe donc bien par là, mais on « saute » par dessus xml1{}.

      Est-ce un indice ?

    • Je n’ai pas d’indice, hélas, mais j’ai le même souci !... Exactement ! À noter que chez moi, les kml ne s’affichent pas non plus entièrement (les markers oui, mais pas les lines)... Je ne sais pas si c’est lié.

    • En fait si j’ai peut-être une piste, mais je ne vois pas encore comment l’exploiter. Un souci coté xml ?

      Ex : http://ww3.ac-creteil.fr/svt/spip.p... n’affiche pas les markers des articles qu’elle devrait afficher, et surtout retourne une erreur dans Firefox :

      Erreur : instruction de traitement XML pas au début d'une entité externe
      Fichier source : http://ww3.ac-creteil.fr/svt/spip.php?page=rss-gis-recursive&limit=50&id_groupe=22
      Ligne : 8, Colonne : 1
      Code source :
      <?xml version="1.0" encoding="iso-8859-1"?>^

      Lapin compris... Une idée ?

    • Moi j’ai trouvé un autre indice hier soir en scrutant les fichiers avec insistance, mais je ne suis pas sûr de moi ;

      inc-gis_map génere le javascript suivant :

      (...)
      //xml almacena en un objeto xml los datos recogidos del documento leido
      (...)
         agregarMarcador(xmlItem1,1,0,17,markerManager1);
      					});

      La fonction agregarMarcador est appelée avec 5 paramètres.

      Dans js/gis.js, cette fonction est définie comme ceci :

      function agregarMarcador (xmlItem, idmap, minZoom, maxZoom) {

      avec 4 paramètres seulement !

      Bon, je ne connais toujours rien au js (je ne sais en particulier pas si il peut y avoir des paramètres par défaut, passés de façon plus ou moins implicite) ; mais j’ai plutôt l’impression que ça devrait couiner, non ?

    • Je ne connais rien au js non plus, mais je ne crois pas que ça vienne de là.

      D’une part parce que ça fonctionne bien chez d’autres (donc ce n’est pas des erreurs de js, liées au navigateur qu’il faut chercher, mais plus des problèmes sur les spécificités de nos sites : contenu, autres plugin, etc.).

      D’autre par dans js/gis.js le markerManager1 qui n’est pas récupéré dans les paramètres est défini quelques lignes plus loin : var marker = eval('markerManager'+idmap);. Ce paramètre semble donc inutile, j’ai essayé de le retirer de l’appel de la fonction dans inc-gis_map sans que ça ne change quoi que ce soit au problème...

      Le mystère reste entier... As-tu la même erreur sur l’analyse du rss que moi ? (voir mon message).

      C’est bien dommage parce que j’avais plein d’idées de développements pour gis !!!

    • Encore quelques infos complémentaires que je ne sais pas interpréter : j’ai viré la ligne <?php echo '<' ?>?xml version="1.0"[ encoding="(#CHARSET)"]?> qui posait problème à Firefox de rss-gis-recursive.html (et de rss-gis.html). Et là miracle, les markers s’affichent dans konqueror... Pas dans Firefox... J’ai pas essayé d’autres navigateurs, je n’en ai pas, là sous la main...

      On dirait bien que ce rss est difficile à analyser... Mais là dedans c’est js et jQuery et je n’y pige que goûte !

    • « Je ne connais rien au js non plus, mais je ne crois pas que ça vienne de là. »

      C’est bien possible... Y’a quand même un truc qui me chagrine, c’est que pour voir j’ai rajouté un flag dans la fonction agregarMarcador, comme ceci :

      function agregarMarcador (xmlItem, idmap, minZoom, maxZoom) {
      	//almacenamos en distintas variables la informacion contenida nen los chilNodes de cada item-marcador do xml
      	alert("executing agregarMarcador");
      (...)

      Eh ben, cette alerte je ne la vois jamais... Apparement je ne rentre pas dans cette fonction !

      Ton erreur xml ne me dit rien, en tout cas Opera ne me la montre pas. Firefox non plus d’ailleurs.

    • Oui... Mes flags ne sont pas « franchis » non plus...

      Ce qui est étrange c’est que les autres ne semblent pas avoir le problème... Il y a donc un truc particulier sur nos sites et seulement ceux-là...

      Je cherche... (mais tout ce jquery et javascript auquels je ne pige rien me donnent le vertige !)

      Quel est ton encodage JF ? UTF-8 ? ISO-8859-1(5) ?

    • Récapitulons la config du site :

      * spip 1.9.2c built 10268
      * Hébergement chez free.fr

      * Site en utf-8

      Plugins :

      * article_pdf
      * squelette basé sur blip avec quelqus modifs maison
      * sauvegarde automatique
      * Et bien sûr cfg, gis_escoitar, google_api

      Les autres réglage (je ne vois pas pourquoi ils joueraient un rôle, mais...)

      * Site configuré pour utiliser les mots-clefs, mais pas les brèves
      * rss : « ne diffuser qu’un résumé »
      * autoriser les documents joints
      * Pas d’inscriptions
      * Pas de proxy

      J’ai pas eu le temps de me pencher là dessus depuis quelques jours, mais j’avais réussi à voir mes flags, et à vérifier que la latitude est bien lue (cf. mon site). Ca c’était mis à marcher, je crois, après avoir rajouté l’argument manquant à agregarMarcador{}.

      Mais les marqueurs ne s’affichent toujours pas. Ce qui repousserait le problème dans le « markerManager », un peu plus bas ?

      Sur un autre site, j’ai trouvé un google map utilisée comme ceci :

          function createMap() 
          {    
              if (GBrowserIsCompatible()) 
              {        
                  var latitude = -25.6409055555556;
                  var longitude = 30.3331638888889;
                          
                  var map = new GMap2(document.getElementById("map"));
                  map.addControl(new GSmallMapControl());
                  map.setCenter(new GLatLng(latitude, longitude), 13, G_HYBRID_MAP);
                  var marker = new GMarker(new GLatLng(latitude, longitude));
                  map.addOverlay(marker);
                  map.addControl(new GOverviewMapControl());
      		}
          }   

      Ce qui m’a l’air plus simple que ce que nous avons avec le marker manager ; je suis en train de me dire que je vais le re-écrire de cette façon ?

    • Ben voilà, je l’ai eu... Sale bête (le bug, pas le plugin).

      Apparement le problème vient du fait que je n’ai pas de son dans les articles. Sans être sûr des détails, je crois que le problème se pose alors dans agregarMarcador(), qui au moment où il appelle la fonction creaMarcador a une variable « son » qui est vide. Du coup, l’appel à cette fonction échoue et le script plante là (merci, le debuggueur js de Firefox !!).

      La solution, dans mon cas, a consisté à virer toute référence au son. Donc dans agregarMarcador :

      var icon = $("geo_icon",xmlItem).text();
      var son;
      if (xmlSon.length != 0) son = xmlSon.attr("url");

      on supprime les deux dernières lignes ici ;

      ensuite,

      var marcador = creaMarcador(point, html, icono_categoria, idmap);

      on change l’appel à creaMarcador

      Et dans creaMarcador :

      function creaMarcador(point, html, icon, idmap) {

      On change la définition.

      Pour moi, ça a l’air de marcher (pas le temps de tester à fond, je suis en train de partir, on m’attend !)

      Pour le dévelopeur du plugin : le problème, si je comprends bien, est quand agregarMarcador essaie de parser le xml. Ici :

      var xmlSon = $("enclosure",xmlItem);

      il cherche le contenu de « enclosure ». Enclosure est généré par rss_gis, dans la boulce « documents ». Si il n’y a pas de document joint, pas d’enclosure (même pas de tags enclosure), donc xmlSon est vide, la variable son n’est pas remplie et l’appel à creaMarcador échoue. Enfin, c’est ce que je crois avoir compris...

      JF

    • Voilà qui est curieux : tes manips ne changent rien chez moi... On est peut-être pas face au même bug...

      Perso j’ai résolu un premier problème d’invalidation du xml qui était dû à des lignes vides au début de chaque squelette (à cause de lignes en trop dans mon mes_fonctions)...

      Désormais les markers s’affichent systématiquement dans konqueror... mais jamais dans firefox et IE (juste 99,9999% des navigateurs !).

      Comme j’écrivais plus haut j’ai essayé ce que tu recommandes, sans succès...

      Mais dans mon gis-rss j’ai toujours une erreur qui pose peut-être souci :

      Erreur : entité non définie
      Fichier source : http://ww3.ac-creteil.fr/svt/spip.php?page=rss-gis-recursive&limit=50&id_groupe=22
      Ligne : 1775, Colonne : 81
      Code source :
      			<itunes:summary>Késako ? Une nouvelle maladie, enfin...pas tant que ça, mais &laquo; on &raquo; s'y intéresse maintenant, bioterrorisme oblige</itunes:summary>

      Il bloque sur les entités laquo et raquo... Je creuse de ce coté là...

    • Je me réponds : de mon coté ça fonctionne mieux après avoir remplacé les « textebrut » par des « texte_backend » dans les fichiers gis-rss-*... D’ailleurs c’est plus logique...

      J’ai commité le changement sur le zone le prochain zip fabriqué devrait donc contenir cette modif...

      Mais comme on peut voir là : http://ww3.ac-creteil.fr/svt/spip.p... tout n’est pas encore parfait, j’ai des soucis avec les images dans les bulles à présent (dur à expliquer, aller voir est plus clair...).

      J’espère que ça t’aidera peut-être...

      (je n’ai pas changé gis.js... les trucs du son restent...)

    • "Mais comme on peut voir là : http://ww3.ac-creteil.fr/svt/spip.p... tout n’est pas encore parfait, j’ai des soucis avec les images dans les bulles à présent (dur à expliquer, aller voir est plus clair...).’

      J’ai regardé très vite, ton souci c’est que les images sont trop grandes non ? Il faut que tu les redimensionnes dans ton rss, avec un |image_reduire bien senti...

    • tout à fait, mais avant de commiter quelque chose, je réfléchis à une implémentation élégante dans le modèle :
      -  soit des params de taille (avec une taille par défaut)
      -  soit carrément choisir d’afficher une image (n° de doc) ou pas du tout
      -  soit les deux...

      Mais bon, je suis sur plein de trucs en même temps alors ce n’est pas rapide !

      Sinon, la nouvelle version du plugin corrige-t-elle tes problèmes ?

    • « tout à fait, mais avant de commiter quelque chose, je réfléchis à une implémentation élégante dans le modèle :
      soit des params de taille (avec une taille par défaut)
      soit carrément choisir d’afficher une image (n° de doc) ou pas du tout
      soit les deux... »

      Graphiquement, je pense qu’une taille par défaut est une bonne idée — ça ne me semble pas très joli d’avoir des tailles différentes pour chaque image, dans chaque bulle ! Une taille homogène est une bonne chose.

      « Sinon, la nouvelle version du plugin corrige-t-elle tes problèmes ? »

      Bof, j’ai pas essayé, vu que je suis arrivé à faire ce que je veux ... d’une façon ou d’une autre !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom