Plugin GMap : géolocalisation et cartographie paramétrable

À quoi sert ce plugin ?
Compatibilité et installation
Configuration
Géolocalisation
Cartographie
Boucles, balises et modèles
Extensions et personnalisations

À quoi sert ce plugin ?

Dans la partie privée, le plugin GMap permet d’associer aux objets SPIP une à plusieurs positions. La saisie se fait directement sur une carte. Les objets supportés sont les rubriques, les articles, les documents (il faut installer le plugin Médiathèque pour avoir accès à l’interface de géolocalisation), les brèves, les mots-clefs et les auteurs.

Dans la partie publique, il permet d’ajouter des cartes, soit dans les squelettes soit directement dans un texte édité sous SPIP, pour représenter les objets géolocalisés, des fichiers KML ou encore des points spécifiques.

GMap a été conçu pour permettre de le paramétrer à plusieurs niveaux.
Au niveau du site on peut définir précisément l’apparence des cartes dans le paramétrage : choix du fournisseur de cartes, des commandes affichées, du fond de carte, etc. Tous ces paramètres peuvent être redéfinis ponctuellement, à l’exception du fournisseur de carte qui concerne forcément l’ensemble du site.
À un niveau plus fin, il est possible de redéfinir l’apparence des points sur les cartes et le contenu des bulles d’information pour une rubrique, une branche ou sur un objet spécifique.
Il est également possible de personnaliser la recherche des points à afficher en définissant des requêtes spécifiques sous la forme de squelettes.

Le plugin est testé sur le site L’Océanique, sur les parties Galerie de photos et Carnet de voyage.

Une aide plus détaillée est intégrée dans le plugin et peut être consultée sur loceanique.org.

Compatibilité et installation

GMap est prévu pour fonctionner sur une version 2 de SPIP supérieure à 2.0.9. La majeure partie des tests ont été menés sur une version 2.1.10.

En modifiant le fichier plugin.xml, il pourrait probablement fonctionner sur des versions antérieures (le développement ayant débuté sur une version 1.9.2), mais ce n’est pas garanti.

En prérequis, il faut installer SPIP Bonux en version 1.8.1 minimum et, pour la géolocalisation des documents, le plugin Médiathèque.

Le plugin s’installe de façon classique : téléchargement du fichier zip, décompression et copie sur le site, activation par l’interface “Gestion des plugins” de SPIP.

Attention si vous mettez à jout d’une version antérieure à 0.2.0 : les fichiers de définition des requêtes ont changés de noms. Ils se nomment maintenant gmap-kml-** au lieu de gmap-query-**.

Configuration

Après l’installation, une icone “GMap” apparaît dans le menu de configuration :

Pour que le plugin soit fonctionnel il faut au minimum définir les clefs nécessaires
sur la page de configuration.
Actuellement, GMap permet de créer des cartes Google Maps V2 et V3. Le plugin GMapMXN, qui s’ajoute à GMap, utilise la librairie Mapstraction qui donne accès aux cartes d’autres fournisseurs, notamment Open Layers, Bing et Yahoo.
Par défaut le plugin est paramétré pour utiliser Google Maps API V3, aucune clef n’est nécessaire pour utiliser l’API, mais il en faut une pour profiter de l’extension Google Earth.

Le menu de paramétrage se présente sous la forme suivante :

  • Système : Paramétrage de base du plugin (API cartographique, clefs, optimisations).
  • Géolocalisation : Paramètrage des comportements dans la partie privée.
  • Cartographie : Paramétrage de l’apparence des cartes, des marqueurs et des bulles d’information (pour l’essentiel spécifique à l’API cartographique).
  • Outils : Outils d’import export de données.
  • Aide : Aide en ligne du plugin, qui vous permettra d’avoir bien plus d’information que dans cette présentation. Il y a également quelques pages de prise en main du code pour les développeurs qui voudraient se lancer.

Géolocalisation

Le plugin insère dans les pages d’édition des objets SPIP (rubrique, article, document, brève, mot-clef et auteur) une interface qui permet de géolocaliser l’objet. Pour les documents, il faut avoir installé le plugin Médiathèque pour avoir accès à la page de modification d’un document.

L’interface comporte principalement une carte, une zone d’édition des marqueurs et un bouton “Enregistrer” qui permet d’enregistrer les modifications en base de données.

Édition des marqueurs

Il est possible d’associer plusieurs points à chaque objet SPIP (la base de données supporte également l’inverse mais je n’ai pas encore implémenté cette fonctionnalité).

L’interface est constituée d’un tableau des marqueurs défini, dont un seul, surligné en rouge est actif sur la carte :

On peut modifier la position, le facteur de zoom associé et le type de marqueur. On peut également ajouter de nouveau marqueur grâce à la commande “ajouter un marqueur” située en dessous du tableau et supprimer les marqueurs grâce à la petite croix rouge à la fin de chaque ligne.

Normalement le positionnement du marqueur actif se fait en cliquant sur la carte et la modification du zoom est modifiant le zoom de la carte. Il est également possible d’éditer directement les valeurs mais cela ne met pas à jour la position de la carte (on peut considérer que c’est un bug).

Les types de marqueurs peuvent être édités depuis l’interface de paramétrage du plugin :

Recherche par adresse

Cette fonction n’est disponible que si l’implémentation de carte offre la fonctionnalité de geocoding.

Après avoir cliqué sur le bouton “Rechercher”, une liste des résultats possibles est affichée, chaque point est également représenté sur la carte. On peut copier les coordonnées sur le point en cours d’édition en cliquant sur le petit signe plus à droite du tableau.

Coordonnées des voisins

Pour les articles et les documents seulement (car ils sont datés), GMap permet de rechercher les cooordonnées des points associés à des objets de même type proches dans le temps et l’espace.

L’interface permet de définir les contraintes de la recherche (temps, position, arborescence) et le nombre de points affichés. Après la recherche, les meilleurs points sont affichés dans le tableau et sur la carte. On peut copier les coordonnées sur le point en cours d’édition en cliquant sur le petit signe plus à droite du tableau.

Cas des documents

Par défaut, seule la page de modification accessible par la médiathèque permet de géolocaliser le document, la popup qui s’ouvre depuis l’édition d’un article n’y donne pas accès (c’est un bug que je n’ai pas pu corriger : l’appel à l’interface se faisant en ajax, je n’arrive pas à initialiser les cartes correctement... Si quelqu’un a une idée...).

Pour palier ce petit désagrément, j’ai ajouté un paramétrage dans le plugin pour désactiver automatiquement l’ouverture du popup : le bouton “modifier” renvoie alors sur la page d’édition d’un document.

Pour activer ce comportement, il faut cocher la case “Désactiver l’édition des documents par boîte modale depuis un article” dans la partie “Accès à l’interface de géolocalisation” de l’onglet “Géolocalisation” du paramétrage du plugin.

Cartographie

Affichage de la carte

Après avoir géolocalisé les objets, il reste à produire des cartes pour les représenter sur le site. GMap offre plusieurs moyen de le faire, présenté ci-dessous. Vous trouverez dans la suite une description plus détaillée des balises, modèles et boucles qui permettent de créer des cartes, ce premier survol est surtout destiné à permettre une prise en main rapide du plugin.

  • Balise #GEOMAP dans un squelette, modèle map dans un texte

GMap propose deux moyens d’intégrer des cartes dans le site public :

  • Introduire dans les squelettes des balises #GEOMAP,
  • Introduire dans les textes des modèles map.

Ajouter une balise #GEOMAP permet d’afficher des cartes sur toutes les pages qui utilisent le squelette. C’est donc un moyen partique de généraliser la représentation cartographique des objets, par exemple si vous envisagez de géolocaliser tous les articles ou tous les documents d’une rubrique.
Par exemple, le code ci-dessous, blacé dans une boucle ARTICLES, permet d’ajouter une carte qui représente tous les documents d’un article :

[<div style="position: relative; display: block; width: 100%; height: 400px;">
(#GEOMAP{id_article, markers=documents})
</div>]

À l’inverse, si la présence de carte reste exceptionnelle sur le site, il est préférable d’utiliser un modèle directement ajouté dans le texte d’un article, d’une rubrique ou de tout autre objet SPIP dont le texte peut contenir des modèles.
Par exemple, le texte ci-dessous permettra de représenter la position d’un unique article géolocalisé, sur une carte de 400 par 200 pixels au zoom 3 :

  1. <map|id_article=36|markers=local|hauteur=400px|largeur=400px|zoom=3>


Ce qui donne :

  • Paramètres d’affichage définis dans la partie privée

L’apparence des cartes peut beaucoup varier, même en conservant la même implémentation (le même fournisseur de service cartographique) : on peut choisir le fond de carte, les commandes présentes (échelle, choix du fond, zoom, etc.).
Pour faciliter la mise au point du site, GMap propose une interface de configuration par laquelle on peut définir l’apparence de la carte et visualiser immédiatement le résultat produit. Ce paramétrage sera valable pour tout le site, à moins qu’il ne soit surcharger localement.

Par exemple, l’ajout du paramètre type dans le texte précédent permet de changer le fond de carte :

  1. <map|id_article=36|markers=local|hauteur=400px|largeur=400px|zoom=3|type=physic>


Ce qui donne :

Tous les paramètres d’affichage peuvent être surchargés, mais le paramétrage global offre un confort que ne permettent pas les paramètres. Reportez-vous à la documentation intégrée au plugin, reproduite sur l’Océanique, pour plus d’informations.

Ajout des points

GMap offre de multiples façons d’ajouter des points sur les cartes. L’éventail des possibilités peut être cerné en lisant la documentation des balises.
Pour commencer, il y a deux techniques :

  • Ajouter les points en même temps que la carte, par l’intermédiaire du paramètre markers de la balise #GEOMAP (ou du modèle map, qui est équivalent), comme dans les exemples ci-dessus;
  • Ajouter une carte par la balise #GEOMAP, puis ajouter les marqueurs par un ou plusieurs appels à la balise #GEOMARKER (ou modèle ).

Le paramètre markers est utilisable sur la balise #GEOMAP aussi bien que sur la balise #GEOMARKER.
Il a deux modes de fonctionnement :

  • Quand il prend les valeurs local, childs ou recursive, des points sont définis dans la page HTML générée. Ce mode alourdit la page transférée au client web et n’est utilisable que sur un petit nombre de marqueurs.
  • Quand il prend toute autre valeur, la carte est d’abord affichée puis les points sont demandés au serveur par une requête ajax. Ce mode est à la fois plus ergonomique (la page s’affiche immédiatement, les points arrivent après) et plus souple puisque les requêtes ajax peuvent être personnalisées. Les requêtes sont détaillées au chapitre suivant.

L’utilisation de la balise #GEOMARKER offre des possibilités plus inédites comme :

  • Ajouter des points qui ne proviennent pas d’un objet géolocalisé, soit en donnant ses coordonnées, soit en donnant son adresse.
  • Ajouter des marqueurs provenant d’une requête complexe passée dans un squelette : par exemple inclure la balise #GEOMARKER dans une boucle qui sélectionne les articles selon un critère de date.
  • Requêtes sur les objets géolocalisés

Le paramètre markers permet de désigner une requête permettant d’extraire du site une collection de points géographiques. Ces requêtes sont définies sous forme de squelettes qui renvoient des fichiers aux formats KML ou GeoJSON.

  • La requête par défaut est accessible par le paramètre markers=query, elle permet de récupérer les coordonnées des objets associés à un objet de référence. Pour une rubrique, ce sont les sous-rubriques, les articles, les documents, les brèves et les mots-clefs; pour un article, les documents et les mots-clefs; pour un mots-clefs, tous les objets qui y sont liés.
  • La requête sur les articles (markers=articles) permettant de récupérer les coordonnées de tous les articles, d’un article particulier ou des articles d’une rubrique, d’un auteur, liés à un mot-clef, etc.
  • La requête sur les documents (markers=documents) permettant de récupérer les coordonnées de tous les documents, d’un document particulier ou des documents liés à un article ou une rubrique.
  • La requête sur les rubriques (markers=rubriques) permettant de récupérer les coordonnées de toutes les rubriques, d’une rubrique particulière ou des rubriques ayant un même parent ou d’un même secteur, ou partagenat un mot-clef.
  • La requête sur les rubriques racines (markers=racine) permettant de récupérer les coordonnées des rubriques à la racine du site.
  • La requête sur les auteurs (markers=auteurs) permettant de récupérer les coordonnées de tous les auteurs, d’un auteur particulier ou des auteurs d’un article.
  • La requête sur les brèves (markers=breves) permettant de récupérer les coordonnées de toutes les brèves, d’une brève particulière ou des brèves d’un secteur liées à un mots-clefs.
  • La requête sur les mots-clefs (markers=mots) qui permet de récupérer les coordonnées de tous les mots, d’un mot particulier ou des mots liées à un objet.
  • La requête de recherche (markers=recherche) qui ajoute les coordonnées des objets répondants à un critère de recherche, cette requête est spécialement destinée à l’ajout d’une carte dans le squelette recherche.html.

Ces requêtes étant formalisées par des squelettes, il est possible de les surcharger. En outre, GMap permet d’appeler par le paramètre markers de nouvelles requêtes conçues pour des besoins qui ne seraient pas couverts par les requêtes déjà prévues (voir le dernier chapitre de cet article sur la personnalisation de GMap).

Exemples

Voici quelques exemples de ce qu’il est possible de cartographier à l’aide de GMap.
Certains exemples sont donnés avec l’écriture utilisant les balises, pour les squelettes, d’autres en utilisant les modèles, pour les textes. Ces deux écritures sont totalement équivalentes, malgré quelques incohérences dans le nommage des paramètres.

  • Afficher une carte avec un seul et unique point

La balise #GEOMARKER permet d’ajouter un point en donnant directement ses coordonnées. Il suffit pour cela de renseigner les paramètres latitude et longitude.

[<div style="position: relative; display: block; width: 100%; height: 400px;">
  (#GEOMAP)
  #GEOMARKER{latitude=38, longitude=-6, titre=un marqueur manuel, icon=gmap-marker-article, texte=toto}
</div>]

Il est également possible d’ajouter un point désigné par une adresse. GMap utilise alors le geocoder pour récupérer dynamiquement les coordonnées du point.
Outre le confort de ne pas avoir à recopier les coordonnées, cette option permet de représenter des objets qui ne sont pas géolocalisé mais comportent une indication d’adresse. Le risque est bien sûr que l’adresse ne soit pas reconnue par le geocoder, auquel cas aucun point n’est affiché.
Par exemple :

<map|hauteur=300px|largeur=400px|zoom=5>
<marker|adresse=Ulan Bator; Mongolie|titre=Ulan Bator|texte=Une balade à Ulan Bator|focus>

Donne :

  • Afficher les articles d’une rubrique, les documents d’un article, etc.

C’est ce que fait la requête par défaut de GMap. Il suffit d’intégrer une carte avec markers=query en paramètre :

  1. <map|id_article=53|markers=query>

Ou dans un squelette :

[<div style="position: relative; display: block; width: 100%; height: 400px;">
  (#GEOMAP{id_article, markers=query})
</div>]
  • Afficher tous les auteurs du site

On utilise la requête sur les auteurs, en ne donnant aucune contrainte :

  1. <map|markers=auteurs>

Ce qui donne :

  • Afficher les articles d’un auteur

On utilise ici la requête sur les articles en lui donnant une contrainte sur l’identifiant d’un auteur :

<map|hauteur=300px|largeur=400px|zoom=2>
<marker|id_auteur=2|markers=articles|focus>

ou (c’est équivalent) :

  1. <map|hauteur=300px|largeur=400px|zoom=2|id_auteur=2|markers=articles|focus>

Ce qui donne :

  • Afficher les résultats d’une recherche

Pour permettre le localisation géographique des résultats d’une recherche, GMap contient une requête spécifique : markers=recherche.
Dans le squelette recherche.html de la distribution SPIP, la carte s’insère en ajoutant :

[<div style="height: 400px">
  (#GEOMAP{markers=recherche, recherche=#RECHERCHE, focus})
</div>]

Ce qui donne :

  • Modifier la requête pour une branche du site

Toutes les requêtes contenues dans GMap peuvent être surchargées : ce sont des squelettes que l’on peut spécialier en fonction d’une rubrique (squelette=XX) ou d’une branche (squelette-XX).
Par exemple, en plaçant un fichier gmap-kml-article-54.html dans le dossier squelettes, on redéfinit la requête par défaut (utilisée quand markers=query pour les articles de la rubrique 54 et des rubriques descendantes.

  • Modifier la représentation des points pour une branche du site

De la même manière, on peut surcharger l’apparence des points sur la carte. Pour surcharger l’apparence de points représentant les articles de la rubrique 11, il suffit de placer un fichier gmap-marker-article-11.gmd dans le dossier squelettes. Il s’agit d’un fichier XML à la syntaxe simple permettant de définir une icone :

<?xml version="1.0" encoding="UTF-8">
<markers>
  <icon type="shadow">
    <image>images/rub11/gmap-shadow.png</image>
    <size x="32" y="32" />
    <anchor x="0" y="32" />
  </icon>
  <icon state="normal" type="simple">
    <image>images/rub11/gmap-marker-article.png</image>
    <size x="32" y="32" />
    <anchor x="0" y="32" />
    <offset x="0" y="32" />
  </icon>
</markers>

Sur les cartes, les points peuvent apparaître avec des icones différentes :

Regroupement des bulles d’information

Quand une carte commence à contenir beaucoup de points, il arrive souvent que les icones se chevauchent.
Pour contourner ce problème, GMap propose une fonction de regroupement des bulles d’information qui permet de naviguer entre les descriptions des différents points affichés. La barre de navigation permet également de zoomer la carte pour différencier les points.

Cette fonction est désactivée par défaut, elle s’active depuis le paramétrage de l’interface.

Cette fonction est spécifique à l’implémentation, elle est implémentée pour Google Maps V2 et V3 mais ne le sera pas obligatoirement sur d’autres implémentations.

Export de fichiers KML

Pour transmettre les points à afficher au navigateur, GMap utilise par défaut le format KML. Il est donc tout à fait possible de télécharger un fichier KML représentant les points, par exemple pour l’afficher dans Google Earth.

On peut par exemple ajouter dans un squelette :

  1. [<a href="(#URL_PAGE{gmap-query-default}|parametre_url{'id_rubrique',#ID_RUBRIQUE}|parametre_url{mime,application/vnd.google-earth.kml+xml})" title="<:bouton_telecharger:>" type="application/vnd.google-earth.kml+xml">(<:bouton_telecharger:>)</a>]

Ce qui produira un lien sur le fichier :
http://mondomaine/spip.php?page=gmap-query-default&id_rubrique=1&mime=application%2Fvnd.google-earth.kml%2Bxml

Boucles, balises et modèles

Balise #GEOMAP

La balise #GEOMAP permet d’afficher une carte et, optionnellement, d’y ajouter des points géographique.
Ces caractéristiques ont déjà été illustrées dans le chapitre Cartographie ci-dessus.

La balise essaye toujours de trouver un point de référence parmi les paramètres qui lui sont fournis et le contexte de l’appel (donc les boucles dans lesquelles se trouve la balise).
L’objet de référence est utilisé de façon différente selon qu’on se place du point de vue de la carte ou du point de vue des points à représenter :

  • Pour la carte, l’objet de référence sert à centrer la carte initialiser le positionnement de la carte : centre et facteur de zoom prennent la valeur définie sur l’objet. Si l’objet de référence n’est pas géolocalisé, GMap remonte sur ses ancêtres, puis utilise en dernier recours le paramétrage par défaut du site. Ce fonctionnement peut-être surchargé par le paramètre viewport, le paramètre focus ou les paramètres latitude, longitude, zoom.
  • Pour la recherche des points à ajouter, l’objet de référence est également utilisé : c’est l’objet à partir duquel on recherchera les fils, descendants, objets liés, etc.

Ce double rôle a ses avantages et ses inconvénients : d’un côté il permet de maitriser depuis l’interface de géolocalisation quelle sera l’étendue de la carte, d’un autre il peut amener des effets de bords étonnants. Dans ce dernier cas, on pourra décomposer l’appel à #GEOMAP en deux : un appel de #GEOMAP sans le paramètre markers suivi d’un appel à #GEOMARKER.

Pour fonctionner correctement, il faut cependant que la balise #GEOMAP soit intégrée dans une div ayant une hauteur explicite (en pixels), la largeur peut être exprimée en pourcentage. Dans le cas contraire la carte ne peut s’afficher correctement. Si la carte est intégrée dans un bloc dimensionnable ou qui peut être caché (par exemple dans des onglets), il sera nécessaire d’envoyer un évènement resize sur le bloc qui contient la carte afin qu’elle se redimensionne correctement.

La balise #GEOMAP accepte de nombreux autres paramètres qui permettent de surcharger toute l’apparence de la carte (et dont beaucoup dépendent de la couche d’implémentation de la carte). Ce serait long de tout détailler ici, référez-vous à la documentation intégrée au plugin.

Balise #GEOMARKER

Cette balise permet d’ajouter manuellement des points sur la carte. Les coordonnées peuvent être fournies explicitement, ou elle peuvent provenir d’un élément géolocalisé dans SPIP.

Si plusieurs balises GEOMAP sont présentes, on peut utiliser le paramètre map=X pour donner un numéro à la carte et lever les ambiguïtés. Sans ce paramètre, le marqueur sera ajouté sur la dernière carte créée au moment où la balise GEOMARKER est interprétée.

Balise #GEOKML

Cette balise permet d’ajouter un fichier KML sur la carte.

#GEOKML{url=http://code.google.com/p/kml-samples/source/browse/trunk/kml/Placemark/placemark.kmz}
#GEOKML{id_document=1962}
  • La première forme ajoute un fichier KML dont l’url est donnée explicitement.
  • La deuxième forme ajoute un fichier KML présent dans SPIP sous la forme d’un document.

Si plusieurs balises GEOMAP sont présentes, on peut utiliser le paramètre map=X pour donner un numéro à la carte et lever les ambiguïtés. Sans ce paramètre, le marqueur sera ajouté sur la dernière carte créée au moment où la balise GEOKML est interprétée.

Modèles map et marker

Ce sont les équivalents des balises #GEOMAP et #GEOMARKER pour l’insertion dans les textes des éléments de SPIP.

L’utilisation et les paramètres sont les mêmes, à une exception notable près : tous les identifiants doivent être accompagnés d’une valeur numérique car le modèle n’accède pas au contexte.

On peut donner un numéro à la carte par le paramètre carte, ceci permet de placer les marqueurs avant ou après la carte elle-même :

<marker|carte=10|id_article=1>
<map|carte=10>
<marker|carte=10|latitude=10|longitude=45|titre=un marqueur|texte=turlututu chapeau pointu>

Note : pour une raison que je saisi mal, un modèle sans paramètre (seulement <map> ne fonctionne pas. On peut s’en sortir en mettant un paramètre quelconque :

  1. <map|toto>

Boucles

Le plugin introduit également une boucle GEOPOINTS qui permet de parcourir les points associés à un objet et une boucle GEOTEST qui permet de tester si un objet ou ses descendants sont géolocalisés.

Extensions et personnalisations

GMap a été conçu pour être personnalisable, il offre donc de nombreuses possibilités pour redéfinir les cartes.

La personnalisation est basée sur un mécanisme très proche de celui qu’utilise SPIP au niveau des squelettes : les requêtes sur les points, les icones et le contenu des info-bulles sont définis par des squelettes que l’on peut surcharger pour l’ensemble du site, pour une rubrique ou pour une branche. De plus, les icones et le contenu des info-bulles peuvent être définis selon le type d’objet et le type de point qu’ils représentent.

Requêtes sur les points

La combinaison des paramètres markers et query des balises #GEOMAP et #GEOMARKER permet de récupérer les points à afficher en exécutant une requête sur le serveur. Cette requête est définie dans un squelette qui renvoie un fichier au formats KML ou GeoJSON. Il est assez facile de redéfinir des fichiers de requête et de les intégrer dans le fonctionnement de GMap.

Ces fichiers sont traités comme des squelettes qui renvoient un fichier XML, ils peuvent donc contenir des boucles.
GMap contient plusieurs fichiers de requête qui peuvent servir d’exemple : gmap-kml-default.html, gmap-kml-articles.html, gmap-kml-documents.html, etc.

Une description plus détaillée des la surcharge des requête est disponible dans l’aide en ligne du plugin et reproduite sur loceanique.org.

Apparence des points

GMap permet également de définir des icones spécifiques pour chaque type d’objet, chaque type de point et par rubrique ou branche.
Il ne permet par contre pas, dans la version actuelle, de choisir une représentation spécifique depuis la partie privée du site, il faut forcément ajouter des fichiers sur le serveur.

Les icones utilisées sur les cartes ne sont pas de simples images :

  • Comme elle représentent un point géographique précis, elles doivent être dotée d’un point d’ancrage qui permet de les positionner au pixel près (c’est d’ailleurs pour cela que le terme “icone” est adapté).
  • Selon les fournisseurs l’image peut être séparée de l’ombrage, ce qui clarifie les cas où plusieurs marqueurs se chevauches et permet de jolis effets sur le déplacement (dans Google Maps l’ombre s’écarte comme si on soulevait le marqueur).
  • Selon les fournisseurs aussi, on peut définir un point d’ancrage des info-bulles.
  • GMap introduit la possibilité de sélectionner les marqueurs, il faut donc définir des images pour l’état sélectionné.

Pour cette raison, il ne suffit pas de fournir une image pour changer l’apparence des marqueurs. GMap utilise donc un fichier XML de définition des icones qui porte l’extension .gmd.

Comme les fichiers de requêtes (voir ci-dessus), les fichiers de définition des icones peuvent être surchargés selon les objets, les types de points ou les rubriques auxquelles appartiennent les objets représentés.

Contenu des bulles d’information

Selon le même principe, le contenu des bulles d’information est défini dans des fichiers squelettes dans lesquels on peut utiliser des boucles SPIP.

Le stylage des info-bulles est contenu dans un fichier style/gmap-balloon.css, il permet de redéfinir le look des bulles sans toucher à leur contenu.

Attention : en redéfinissant les fichiers gmap-info-*.html, on pourrait penser s’affranchir de gmap-balloon.css, mais ce n’est vrai que pour les fichiers KML lus dans Google Earth. En effet, en interne, seul le contenu de la balise <body></body> est conservé et le style des info-bulle se fait en intégrant gmap-balloon.css dans la page HTML qui contient la carte.

Lorsque la fonction de regroupement des info-bulles est activée, l’apparence de la barre de navigation est figée, on ne peut la modifier qu’en redéfinissant le fichier style/gmap-balloon.css.

updated on 2 October 2019

Discussion

15 discussions

  • 7

    Grr, je ne comprends pas pourquoi mes marqueurs ne s’affichent plus, et je recherche donc un peu d’aide. Pourtant, ce matin, après installation du plugin, et test, ça marchait, depuis plus rien ! Je suis en spip 2.1.12.

    Pour résumer, j’ai une base de 1000 concerts (1 concert = 1 article dans la rubrique 8) dont je veux géolocaliser les lieux, j’avais fait le travail pour une centaine de dates, et tout se passait bien. Depuis la carte qui regroupe tous les lieux de concert n’affiche plus les marqueurs (la preuve ici : http://www.radiohead.fr/-concerts-).

    Le code est :

    [<div style="position: relative; display: block; width: 580px; height: 420px;">
        (#GEOMAP{id_rubrique=8, markers=query})
        </div>]

    Je pensais que les géolocalisations n’étaient pas prises en compte, mais je me rends compte que si, puisque sur chaque page de concert, j’avais pris soin d’ajouter une carte qui n’affiche que le lieu de concert en question (exemple avec une date aux Etats-Unis : http://www.radiohead.fr/27-fevrier-2012-American-Airlines) avec le code suivant :

    [<div style="float: right; width: 270px; height: 300px;">
    (#GEOMAP{id_article, markers=query})
    </div>]

    et donc, comme dans le premier cas, je n’ai aucun marqueur sur ma carte MAIS la carte est bien centrée sur le point que j’ai géolocalisé. On le constate en zoomant. C’est ce qui me fait penser que j’ai un problème d’affichage de marqueur !
    Si quelqu’un a une solution, une piste... je suis preneuse.

    • marjorie

      J’avais oublié de mettre mon nom !

    • Fabrice

      J’ai essayé et le fichier qui contient les marqueurs est tronqué (url: http://www.radiohead.fr/spip.php?page=gmap-kml-default&merkers=query&objet=rubrique&id_objet=8&map=1&id_rubrique=8). Je n’ai pas eu le temps de trouver pourquoi... Si tu peux essayer en ajoutant un var_mode=debug ça pourrait aider à voir ce qui plante.

      En attendant, j’ai essayé la même requête en json et là, ça passe (ce qui plaiderait pour une limitation quelconque du serveur, le fichier json étant un peu plus petit...), url: http://www.radiohead.fr/spip.php?page=gmap-json-default&markers=query&objet=rubrique&id_objet=8&id_rubrique=8&format=json.
      Donc en ajoutant un format=json dans les paramètres de #GEOMAP ça devrait marcher.

      Je prendrais le temps de regarder plus en profondeur ce soir.

    • marjorie

      Déjà, grand merci à toi d’y avoir regardé ! Je teste le format=json dans un premier temps !

    • J’ai de nouveau essayé de comprendre le(s) problème(s) :

      Pour les cartes qui sont sur les articles, il y a une erreur dans les paramètres de GEOMAP : avec markers=query, la requête va chercher les descendants de id_article géolocalisés. Pour représenter le point de l’article lui-même, il faudrait utiliser markers=local ou markers=articles.

      Concernant la carte de la rubrique, le problème est bien que le fichier qui ramène les points n’arrive pas complet et n’est donc pas un XML valide, d’où pas de points du tout... Par contre je ne sais pas pourquoi. Avec des requêtes différentes (par exemples requête sur gmap-kml-articles au lieu de gmap-kml-default) ça coupe à des endroits différents, donc il me semble que le problème n’est pas lié au contenu d’un article. Ça proviendrait plutôt d’une limite que le process rencontre pendant le traitement (temps de calcul, mémoire...). Il faut voir les traces PHP pour savoir, ou le debug de SPIP peut-être.
      L’utilisation du format json (paramètre format=json dans GEOMAP) devrait résoudre le problème, mais ça m’embête parce que, du coup, je ne saurai jamais ce qui ne marche pas !

      Il y a un autre bug avec les caractères accentués : les titres des points manquent. Quel est l’encodage de votre site ?

    • marjorie

      Enorme merci pour toutes ces combines, qui m’ont permis de faire un affichage correct dans les deux cas.

      J’ai en effet un problème avec certains caractères accentués dans les titres, je vais changer ça à la mains demain je pense.

      Le site est encodé en utf-8, mais il doit rester par ci-par là quelques reliquats des vieilles version en html...

    • Tant mieux si ça marche.

      Cependant ça me semble assez long. Il est normal que, avec 1000 points, le temps de calcul de la page soit assez long. Cependant, une fois qu’elle est en cache, ce temps devrait disparaître. Avez-vous activer la compression des flux html dans spip (configuration avancée, tout en bas de la page) ?
      Sur la page http://www.loceanique.org/spip/rubrique54.html, qui représente 700 points, on voit bien la différence entre le temps pris quand le flux est recalculé (après avoir vidé le cache ou modifié un article) et quand il est renvoyé par le cache.

      Je vais faire une modification dans GMap pour optimiser le calcul des listes de points : http://www.loceanique.org/spip/rubrique57.html#article450. Je signalerai la nouvelle version sur cette page.

    • Je n’avais pas activé la compression, c’est désormais chose faite !

    Reply to this message

  • 1

    Bonjour,

    J’ai un conflit avec jquery.js.
    il est dans mon inc_pied pour charger mes JS à la fin. si je désactive celui-ci: http://ecomeeting.info/js/jquery.js alors GMAP fonctionne.

    Le souci c’est que j’en ai besoin de ce JS.
    Quelqu’un aurait-il une piste pour régler ce conflit?

    • GMap repose sur le jquery qui est embarqué dans SPIP. Utiliser un jQuery plus récent peut toujours provoquer des interférences avec SPIP. Et comme GMap fonctionne principalement à partir de javascript déclenchés au chargement du document, si le js plante GMap ne s’initialise pas.

      Il faut comprendre pourquoi l’ajout d’un jQuery 1.7.1 provoque une erreur dans ajaxCallback.js et, à l’inverse voir se qui empêche les scripts du site de fonctionner avec un jQuery 1.4.4 embarqué par SPIP.

      Je crains de ne pas avoir plus d’idées.

    Reply to this message

  • 13

    Bonjour,

    Chez moi le plugin ne fonctionne QUE sur Firefox, avec IE8 ou 9 sous XP ou W7 j’ai invariablement une fenêtre grise et pas de carte. (voir image jointe)

    Et ce sur plusieurs machines , j’ai cherché dans les paramètres de sécurités, réinstallé Activex , ajouté google dans les sites de confiances .... mais rien à faire je ne comprends pas pourquoi cela ne fonctionne pas avec IEx.
    Une Idée ?

    Cordialement,
    Michel

    • Bonjour,

      Non, pas trop d’idée...
      Je travaille principalement sur W7/IE9 et ça passe sans problème. Et je teste régulièrement sur XP avec IE8, ainsi qu’avec Chrome et FireFox.

      Pendant le développement du plugin, les pages grises provenaient invariablement d’une erreur Javascript. Je suis tombé sur des erreurs dans mon code bien sûr, mais aussi que des erreurs dues à la version de JQuery ou à la compression des scripts faite par SPIP.

      Dans le plugin, je désactive la compression des scripts dans l’espace par un “define(’_INTERDIRE_COMPACTE_HEAD_ECRIRE’,true);” dans gmap-options.php.
      Mais il n’y a pas de raison que le problème ne se trouve que sur IE.

      Pour avancer, pouvez-vous :
      1 - Essayer en désactivant la compression des scripts dans l’admin de SPIP.
      2 - Vérifier que IE ne se met pas en mode de compatibilité dégradé (juste au cas où, mais l’admin de SPIP aurait aussi une drôle de tête...)
      3 - Activer les outils de développement sur IE9 (bien mieux que les précédents) et regarder dans l’onglet “script” si la console indique une erreur.

      Merci,
      Fabrice

    • Merci du retour rapide,

      1° La compression n’est pas activée
      2° Pas de mode de compatibilité dégradé
      3° Effectivement il y a une erreur avec le débogueur.

      voici l’erreur
      gmap_impl_public.js, Ligne 276 Caractère 4
      SCRIPT445: Cet objet ne gère pas cette action

      Et la ligne concernée
      mapOptions.center = new google.maps.LatLng(params.viewLatitude, params.viewLongitude);

      Mais bon pour moi cela ne parle pas désolé.

      Michel

    • Bon, c’est le premier appel à une objet Google Maps V3 dans la construction de la carte, ce qui me laisse penser que, pour une raison ou une autre, le script Google Maps ne s’est pas chargé.
      Il faudrait que je voie le code source de la page.
      Est-ce que le site qui produit l’erreur est public, puis-je avoir un accès à la partie privée ?
      Sinon, passez-moi une adresse mail par un message privé sur spip-contrib et on s’échangera la page HTML par mail.
      Je n’arrive pas à trouver une cause qui soit spécifique à IE.

    • Oui le site est public, (enfin par encore en ligne officiellement) c’est ici
      http://www.lanrivoare.fr/nouveau_site

      La carte doit apparaitre dans l’onglet “Localisation”

      c’est suffisant l’adresse public ?

      Cordialement,

      Michel

    • Eh bien, sur le site public ça marche. J’ai un petit soucis, sous IE, avec le fait que la carte est dans une div cachée : il faudrait envoyer un évènement “resize” sur la div qui contient la carte (class=“carte_gmap”) au moment où le conteneur est rendu visible.

      Mais ça n’a aucun rapport avec ce qu’il se passe sur la partie privée et là, je ne peux pas la voir.

      Ravi de voir gmap sur le site de Lanrivoare !

    • Merci du “encore” retour rapide,

      Ça ouvre des horizons car chez moi rien ni sur public ni si la partie privée, sur mes deux machines (W7 Pro IE9, et XP pro IE8), cela confirme ce que je voyais arriver depuis un moment j’ai un “bazar” sur ma connexion, car même lorsque j’essaie à travers une prise de contrôle via le bureau à distance (machine hors de chez moi) c’est la même chose sur la partie public et privée de la machine distante.
      Ma box “filtre” ? c’est le seul lien commun ?, bon j’ai du mal à comprendre et j’avoue être “sec”.

      En tous cas merci pour l’aide.
      Bonne fin de soirée, et merci pour ce plugin bien pratique.
      Cordialement,
      Michel

    • Salut,
      j’ai le meme erreur avec Explorer. Avec Firefox et Chrome est OK.

      Je pense (pas sur !!!) que l’erreur est dans ces fonctions javascript, qui ont une liste de params terminé avec ’,’ (et peut-etre fait des problèmes avec explorer)

      map.setIcon("rubrique", {
      	urlIconFile: "plugins/gmap/images/gmap-marker-rubrique.png",
      	urlShadowFile: "plugins/gmap/images/gmap-shadow.png",
      	widthIcon: 32,
      	heightIcon: 32,
      	widthShadow: 32,
      	heightShadow: 32,
      	anchorX: 11,
      	anchorY: 31,
      	popupOffsetX: 12,
      	popupOffsetY: 15,
      	});
      map.setIcon("rubrique_sel", {
      	urlIconFile: "plugins/gmap/images/gmap-marker-rubrique-high.png",
      	urlShadowFile: "plugins/gmap/images/gmap-shadow.png",
      	widthIcon: 32,
      	heightIcon: 32,
      	widthShadow: 32,
      	heightShadow: 32,
      	anchorX: 11,
      	anchorY: 31,
      	popupOffsetX: 12,
      	popupOffsetY: 15,
      	});

      qui sont gerés pas gmap_ajoute_markers() en gmap_geoloc.php

      Ciao
      Massimo

    • Bonjour,
      Merci pour la piste, mais... non je ne crois pas : je mets assez régulièrement des virgules en fin de liste pour éviter les oublis lors des rajouts, ça ne pose de problème ni sur FF ni sur IE. Peut-être sur un IE6 ?
      Avec les outils de développement intégrés dans IE9, vous devez pouvoir me dire quelle ligne plante, je pourrais alors voir ce qui cause problème.
      A+
      Fabrice

    • Bonsoir,
      merci de ta reponse.
      J’utilise pour mes tests IE7, FireFox 6, Chrome 15.0.
      Je te confirme que le problème est sur l’appel de la fonction setIcon.
      Je l’ai trouvée parce que IE me signale un erreur javascript a la ligne de closure de l’appel de setIcon , ç.a.d

      1.         });

      qui est just après

      1. popupOffsetY: 15{{,}}

      Si j’ai ben compris Gmap crées une icon pour chaque marker avec la fonction setIcon.

      J’ai fait comme ça:
      1- j’ai pris l’HTML de la page
      2- je l’ai sauvegardée comme test.html et je l’ai mis dans la racine du site
      3- j’ai supprimé toutes les “,” après le param popupOffsetY: 15
      4- j’ai sauvegardé

      Et ça marché.

      Je vais un petit peu plus loin.
      J’ai régardé le code.
      La parametrisation de setIcon est genérée dans gmap_definir_parametre_icon()
      Peut-etre il suffit de changer

      function gmap_definir_parametre_icon($iconFile, $shadowFile = NULL,
      				$xAnchor = NULL, $yAnchor = NULL, $xShadowAnchor = NULL, $yShadowAnchor = NULL,
      				$xOffset = NULL, $yOffset = NULL,
      				$varName = NULL)
      {
      	if ($shadowFile == NULL)
      		$shadowFile = _DIR_PLUGIN_GMAP . 'images/shadow.png';
       
      	$imageInfo = @getimagesize($iconFile);
      	$iconWidth = $imageInfo[0] ? $imageInfo[0] : 32;
      	$iconHeight = $imageInfo[1] ? $imageInfo[1] : 32;
      	$imageInfo = @getimagesize($shadowFile);
      	$shadowWidth = $imageInfo[0] ? $imageInfo[0] : 32;
      	$shadowHeight = $imageInfo[1] ? $imageInfo[1] : 32;
       
      	$out = "";
      	if ($varName)
      		$out .= 'var '.$varName.' = ';	
      	$out .= '{
      		urlIconFile: "'.$iconFile.'",
      		urlShadowFile: "'.$shadowFile.'",
      		widthIcon: '.$iconWidth.',
      		heightIcon: '.$iconHeight.',
      		widthShadow: '.$shadowWidth.',
      		heightShadow: '.$shadowHeight.',';
      	if ($xAnchor != NULL)
      		$out .= '
      		anchorX: '.$xAnchor.',';
      	if ($yAnchor != NULL)
      		$out .= '
      		anchorY: '.$yAnchor.',';
      	if ($xShadowAnchor != NULL)
      		$out .= '
      		anchorShadowX: '.$xShadowAnchor.',';
      	if ($yShadowAnchor != NULL)
      		$out .= '
      		anchorShadowY: '.$yShadowAnchor.',';
      	if ($xOffset != NULL)
      		$out .= '
      		popupOffsetX: '.$xOffset.',';
      	if ($yOffset != NULL)
      		$out .= '
      		popupOffsetY: '.$yOffset.',';
      	$out .= '
      	}';
      	if ($varName)
      		$out .= ';' . "\n";
      	return $out;
      }

      Avec

      function gmap_definir_parametre_icon($iconFile, $shadowFile = NULL,
      				$xAnchor = NULL, $yAnchor = NULL, $xShadowAnchor = NULL, $yShadowAnchor = NULL,
      				$xOffset = NULL, $yOffset = NULL,
      				$varName = NULL)
      {
      	if ($shadowFile == NULL)
      		$shadowFile = _DIR_PLUGIN_GMAP . 'images/shadow.png';
       
      	$imageInfo = @getimagesize($iconFile);
      	$iconWidth = $imageInfo[0] ? $imageInfo[0] : 32;
      	$iconHeight = $imageInfo[1] ? $imageInfo[1] : 32;
      	$imageInfo = @getimagesize($shadowFile);
      	$shadowWidth = $imageInfo[0] ? $imageInfo[0] : 32;
      	$shadowHeight = $imageInfo[1] ? $imageInfo[1] : 32;
       
      	$out = "";
      	if ($varName)
      		$out .= 'var '.$varName.' = ';	
      	$out .= '{
      		urlIconFile: "'.$iconFile.'",
      		urlShadowFile: "'.$shadowFile.'",
      		widthIcon: '.$iconWidth.',
      		heightIcon: '.$iconHeight.',
      		widthShadow: '.$shadowWidth.',
      		heightShadow: '.$shadowHeight;
      	if ($xAnchor != NULL)
      		$out .= ',
      		 anchorX: '.$xAnchor;
      	if ($yAnchor != NULL)
      		$out .= ',
      		anchorY: '.$yAnchor;
      	if ($xShadowAnchor != NULL)
      		$out .= ',
      		anchorShadowX: '.$xShadowAnchor;
      	if ($yShadowAnchor != NULL)
      		$out .= ',
      		anchorShadowY: '.$yShadowAnchor;
      	if ($xOffset != NULL)
      		$out .= ',
      		popupOffsetX: '.$xOffset;
      	if ($yOffset != NULL)
      		$out .= ',
      		popupOffsetY: '.$yOffset;
      	$out .= '
      	}';
      	if ($varName)
      		$out .= ';' . "\n";
      	return $out;
      }

      J’ai surchargé le fichier gmap_geoloc.php avec la fonction modifiée comme ça et ça a marché...

      Ciao Massimo

    • Bon, dans ce cas... Ça fait un moment que je ne teste plus avec IE7.

      Ça m’inquiète un peu, puisque, comme je le disais, j’ai adopté cette écriture un peu partout, en php et en javascript parce que j’en avais marre d’avoir des erreurs après des ajouts de paramètres en oubliant de remettre la virgule. Donc il va falloir que je passe tout le code en revue pour mettre ça d’équerre.
      Ceci dit, il y a quelque chose qui me chiffonne : c’est sur l’ajout des marqueurs que le script doit se planter, donc la carte devrait déjà être créée. Pourquoi est-elle grise ? Un problème de redimensionnement ?

      En ce qui concerne les icones, non, GMap ne créé par une icone pour chaque marqueur mais une icone pour chaque type de marqueur. Dans ton exemple, c’est une icone de rubrique qui sera partagée par tous les marqueurs de rubrique.

      Je regarde pour les modifs de “,” et je remets un message quand je commite.

      A+

      Fabrice

    • Bonjour.

      Pour céla qui j’ai vu:
      -  setIcon is appelèe pendant la création de la carte (le code que j’ai posté est à l’interieur de la fonction loadCartePublic1 qui est appelée avec jQuery(document).ready(function())

      jQuery(document).ready(function()
      {
      	if (!isObject(gMap("gmap_map1")) || !gMap("gmap_map1").isLoaded())
      		loadCartePublic1();
      });

      IE7 trouve un erreur sur l’appel de setIcon et fait ’invalide’ toute la fonction.
      Pour célà la carte n’est pas montrée

      -  sur les icones. gmap (sur mon site) appelle setIcon deux fois par chaque marker.
      Example sur mon site

      // Chargement des marqueurs des descendants
      	map.setIcon("rubrique", {
      ..})
      map.setIcon("rubrique_sel", {
      ..})
      map.setMarker(6, {...})
      map.setIcon("rubrique", {
      ..})
      map.setIcon("rubrique_sel", {
      ..})
      map.setMarker(1, {
      ..})
      map.setIcon("article", {
      ..})
      map.setIcon("article_sel", {
      ..})
      map.setMarker(5, {
      ..})
      Etc...

      J’utilise la balise #GEOMAP avec markers=recursive

      Maintenant ça marche sur mon site, je n’ai pas trouvé d’autres problemes de ce type.

      Ciao
      Massimo

    • C’est corrigé sur SPIP-Zone, révision 54597.
      Grand merci d’avoir signalé le bug : ça faisait longtemps que je n’avais pas testé sur IE7 !

      J’ai aussi amélioré le cache des icones : il est destiné à ne pas rechercher deux fois quel définition d’icone il faut utiliser (gmap-marker-default, gmap-marker-document, ou gmap-marker-document-34 ?). Il n’était donc actif que sur les articles ou documents d’une même rubrique.
      Il y a maintenant un second buffer dédié pour ne pas générer le code javascript qui créé deux fois la même icone. Avec markers=local/chils/recursive ça ne change pas grand-chose : de toute manière la carte détecte le doublon et ne fait rien, mais en KML ou GeoJSON ça peut alléger le fichier.

      Effectivement, GMap créé deux icones pour chaque marqueur : une icone à l’état normal, et une icone à l’état sélectionné. C’est utile si on veut matérialiser des marqueurs actifs sur la carte (par exemple sur http://www.loceanique.org/spip/article36.html, les marqueurs se sélectionnent quand on survole les photos). Il faudrait que je fasse un paramétrage pour ça car ce n’est peut-être pas un besoin très courant.
      Pour info, ce sont les fonctions javascript gmap_bounceMarker et gmap_bounceMarkers qui permettent de sélectionner un marqueur spécifique ou les marqueurs d’un objet.

    • Grande !

    Reply to this message

  • 4
    Christophe

    Bonjour

    Ce plugin me semble très prometteur. Malheureusement, si l’installation semble se dérouler sans encombre, les choses se gâtent lorsque j’en viens à la configuration.

    Je me retrouve avec une erreur SQL 1146

    Table ’monsite_gmap_types’ doesn’t exist

    SELECT spip_gmap_types.id_type_point AS id, spip_gmap_types.objet AS objet, spip_gmap_types.nom AS nom, spip_gmap_types.descriptif AS descriptif, spip_gmap_types.visible AS visible, spip_gmap_types.priorite AS priorite, count(spip_gmap_points.id_point) AS nb_points FROM spip_gmap_types LEFT JOIN spip_gmap_points ON spip_gmap_types.id_type_point = spip_gmap_points.id_type_point GROUP BY spip_gmap_types.id_type_point ORDER BY spip_gmap_types.id_type_point

    Je suis totalement démuni. Auriez-vous une piste pour me sortir de là ?
    Merci d’avance.

    • Bon, j’ai reproduis une erreur a peu près similaire dans le cas où le préfixe des tables n’est pas “spip_” : dans le cas les fonctions de SPIP traduisent toutes les requêtes qui sont passées pour transformer les “spip_” en “monsite_” (par exemple), or il semble que l’expression “count(spip_gmap_points.id_point)” ne soit pas traduite.
      Je vais voir comment gérer ça.

    • Voilà, j’ai modifié le fichier en cause et l’ai remis sur la zone en révision 53703. Je n’ai pas fait évolué le numéro de version du plugin. Pour vérifier que vous avez la bonne révision, regardez le fichier svn.revision à la racine du plugin.
      Le zip devrait être à jour dans quelques heures.

      Ceci dit, il faut que je regarde ce que spip supporte dans le “renommage” des tables des requêtes SQL et que je vérifie toutes les requêtes du plugin pour voir s’il n’y a pas d’autres problèmes du genre.

    • Il y a un autre problème similaire sur un autre fichier, qui devait provoquer une erreur lors de la géolocalisation des articles et des documents, toujours dans le cas où les tables ne sont pas préfixées ’spip_’.

      Je ne peux pas commiter ce soir les modifications sur SPIP-Zone et donc provoquer la mise à jour du paquet téléchargeable sur cette page. Vous pouvez trouver le zip sur loceanique.org.

      Pour info, le problème vient du fait que :

      • depuis le code de spip ou d’un plugin on déclare toujours les tables avec un préfixe ’spip_’, le moteur de spip cache se paramétrage et transpose les noms de tables avant d’exécuter les requêtes;
      • comme c’est actuellement fait, les noms de tables qui sont précédés d’autre chose qu’une virgule ou un espace ne sont pas transposés;
      • dans GMap j’avais deux requêtes dans lesquelles un nom de table était précédé d’une parenthèse ouvrante.
    • Ça y est, le commit sur SPIP Zone est passé, le zip de cette page devrait donc être mis à jour, révision 53708.

    Reply to this message

  • 2

    Bonjour,

    Merci pour cette contribution très intéressante,

    j’ai un souci avec une rubrique (87) et 2 articles publiées dans cette rubrique correspondants à 2 étapes sur la carte.
    J’ai installé le plugin, j’ai pu en partie privée paramétrer les infos de géolocalisation pour la rubrique et les 2 articles en partie privée, et j’ai mis ensuite dans la rubrique, le code suivant : <map|id_rubrique=87|markers=recursive>

    Lorsque j’essaie d’aller dans la partie privée ou dans la partie publique sur cette rubrique, j’ai une page HTML blanche

    est ce un bug ou une erreur dans l’écriture de mon instruction “map” ?

    Merci par avance de votre aide

    cdlt,

    Philippe

    • Il manque le code dans le message, mais j’ai tout de même trouvé un problème...

      Pour insérer une carte dans une rubriques, et y ajouter les points correspondants aux articles de la rubrique, on peut mettre :

      1. <map|id_rubrique=1|markers=query>

      ... le plugin fait alors une requête asynchrone pour récupérer les points (et il y a le logo utilisé partout pour les requêtes ajax).
      ou

      1. <map|id_rubrique=1|markers=childs>

      Auquel cas les points sont directement pris directement lors de la construction de la page côté serveur.

      Il y avait un bug idiot sur cette deuxième méthode que je n’avais pas testée depuis longtemps. Comme c’est une erreur PHP, ça peut très bien mener à une page blanche...
      C’est corrigé sur la zone, le zip devrait être à jour dans peu de temps (révision 53645).

      Merci d’avoir signalé le bug,
      Fabrice

    • Bonjour,

      Merci, ça marche avec query,
      le code que j’avais mis était :

      map|id_rubrique=87|markers=recursive

      cordialement,

      Philippe

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom