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 :

<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 :

<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 :

<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 :

<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) :

<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 :

[<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 :

<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.

Discussion

15 discussions

  • 5
    Hélène

    Bonjour,
    Depuis la dernière mise à jour de gmap, le bouton déplier de la partie privée ne fonctionne plus. Un regard sur la console me dit :
    TypeError : jQuery(this).gmap_depliant is not a function

    Il semble que le header gmap n’inclut pas toutes les css :

    <!-- Header GMAP -->
    <link rel='stylesheet' media='screen' href='../local/cache-
    _ css/4a4031fcee4a9f6f833e019fb863d45d.css' type='text/css' />
    
    
    
    
    <script type="text/javascript" src="http://maps.google.com/maps/api/
    js?sensor=false& v=3&language=fr"></script>
    <script type="text/javascript" src="https://www.google.com/jsapi?key=ABQIAAAAMCZKaxs0YACHLVrwv_VdDxT7MTj6PSM3CZ
    8CsbvUTgZnwxx9MBTcBquRiNnXjY_8A1-2qlRpRDNWfQ"></script>
    <script type="text/javascript">
    //<![CDATA[
    google.load("earth", "1");
    //]]>
    </script>
    
    
    
    
    <script type="text/javascript">
    //<![CDATA[
    	SiteInfo.pluginRoot = "../plugins/auto/gmap/";
    	SiteInfo.iconDef = {
    		urlIconFile: "../plugins/auto/gmap/themes/gmap/images/marker.png",
    		widthIcon: 24,
    		heightIcon: 32,
    		anchorX: 11,
    		anchorY: 31,
    		urlShadowFile: "../plugins/auto/gmap/themes/gmap/images/shadow.png",
    		widthShadow: 32,
    		heightShadow: 32,
    		anchorShadowX: 11,
    		anchorShadowY: 31,
    		urlCompleteFile: "../plugins/auto/gmap/themes/gmap/images/marker-full.png",
    		widthComplete: 32,
    		heightComplete: 32,
    		anchorCompleteX: 11,
    		anchorCompleteY: 31,
    		popupOffsetX: 12,
    		popupOffsetY: 15
    	};
    // Il y a une erreur "undefined" sous IE, pour GoogleMaps et Yahoo, faire un appel pr�coce � document.namespaces semble r�gler le probl�me...
    var IE8NamespaceHack = document.namespaces;
    //]]>
    </script>
    
    <!-- Fin header GMAP -->

    Dernière mise à jour Géolocalisation et cartographie (v0.2.1) Rév. 62491 13/06/12

    j’ai désactivé tous les plugins non indispensable pour gmap et mon site qui est sous SPIP 2.1.17 [19782].

    Je pense revenir à la version antérieur mais comment faire ?

    D’avance merci,
    Hélène

    • Bonjour,
      Le script manquant est gmap_private.js, comme la compression des scripts est activée sur la partie privée, il doit se trouver en haut de la page. Et ça doit ressembler à ça :

      <script type='text/javascript' src='../local/cache-js/5ba0243b098f2fa0590c1e853d905375.js'></script>

      Dans ce javascript, on doit retrouver :

      /* compact [
      	../prive/javascript/jquery.js
      	../prive/javascript/jquery.form.js
      	../prive/javascript/ajaxCallback.js
      	...
      	../plugins/gmap/javascript/gmap_js_utils.js
      	../plugins/gmap/mapimpl/gma3/javascript/gmap_impl_public.js
      	../plugins/gmap/javascript/gmap_public.js
      	../plugins/gmap/javascript/gmap_private.js
      ] 65.5% */

      Je ne vois pas bien pourquoi une partie du header pourrait être manquante, surtout un truc de base comme ça. Mais comme la fonction gmap_sous_depliant est une extension de jQuery (plutôt une mauvaise idée d’ailleurs, mais c’est une autre question), il peut y avoir un problème de ce côté là.

      Je n’ai pas de site en 2.1.17, il faut donc que je teste sur un site en local pour voir où ça coince.

      En attendant vous pouvez tenter de supprimer le contenu de local/cache-js pour voir ce que ça donne.

    • Bonjour,

      D’abord merci pour ta réponse rapide.

      J’ai repris le problème ces derniers jours. Après avoir rechargé le plugin, j’ai vérifié dans le source et constaté que la compression des js est correcte, tous les scripts figurent dans le fichier.

      Mais cela ne fonctionne toujours pas.

      Le bug est apparu après la révision 62491 (depuis le couteau suisse).

      Serait-il possible d’avoir la version du plugin avant cette révision.

      D’avance merci

    • Bonjour,

      Les deux dernières versions de GMap 0.x ne sont que la création de la branche v0 depuis que j’ai commencé la version 1.x pour SPIP 3. La dernière évolution du code « date » de la révision 59891. Je ne pense pas que le problème vienne d’une évolution de GMap.

      Si la fonction jQuery.gmap_depliant() n’est pas connue, et que tous les scripts sont présents, la seule possibilité est qu’il y ait une erreur en amont qui bloque l’exécution des scripts inclus dans l’entête de la page. La console affiche-t-elle une autre erreur ?

      Fabrice

    • Bonjour Fabrice,

      et bonne année ;).

      J’ai repris l’analyse du bug. Après rechargement d’un spip tout neuf (2.1.23) et des plugins gmap et spip_bonux, sur une base vierge, le bug est présent pour googleearth.
      Résolution : tout semble fonctionner si le javascript de googleearth est placé en dernier, ce qui donne dans la compil :"
      ../plugins/auto/gmap/javascript/gmap_js_utils.js
      ../plugins/auto/gmap/javascript/gmap_private.js
      ../plugins/auto/gmap/javascript/gmap_public.js
      ../plugins/auto/gmap/mapimpl/gma3/javascript/gmap_impl_public.js
      ../plugins/auto/gmap/mapimpl/gma3/javascript/googleearth.js
      "
      Du coup, pour changer l’ordre d’apparition dans la compil, il faut modifier gmap_pipeline.php, inc/gmap_script_init.php, et le script_init.php de gmap3/public.

      Mais le choix googleearth n’apparaît pas dans le menu déroulant de la carte en partie privé pour rubrique et article. J’ai du rater quelque chose.

      Cela ne semble pas perturber le fonctionnement, mais bon... il vaut mieux voir avec LE spécialiste. Cela peut-il faire l’objet d’une révision où dois-je rester avec mes modif perso ?

      D’avance merci

    • Bonjour,
      Le script googleearth.js doit être inclus avant gmap_impl_public.js parce que ce dernier l’utilise, donc s’il n’est pas avant il risque d’y avoir un objet non défini.
      Ceci dit, je ne vois pas bien le rapport entre le problème que tu décrivais au début (sur les blocs dépliants) et un problème sur le plugin Google Earth.
      Quel est le problème exactement ? Que dit la console ? C’est toujours « TypeError : jQuery(this).gmap_depliant is not a function » ?

    Répondre à ce message

  • Bonjour,

    J’ai longtemps hésité en GIS et GMAP pour pouvoir géolocaliser tous mes articles, et après divers essais, j’ai choisi GMAP qui me paraissait plus simple, plus souple d’utilisation, et mieux documenté...

    Au final, et après quelques heures de boulot, je suis très content du résultat, et je souhaitais vous en remercier vivement ici :)

    Vous pouvez découvrir le résultat via ce lien : visa-photos, et je vous encourage vivement à me faire des remarques si besoin ;)

    Encore merci !

    Répondre à ce message

  • 3

    Bonjour et merci pour ce plugin qui m’a bien aidé jusqu’ici, mais aujourd’hui je viens de passer une journée entière à tourner en rond.

    L’objectif : afficher sur une carte les inscrits à un événement, je vais chercher l’adresse de chaque inscrit dans le champ correspondant (en fait trois champs : rue, code postal, ville que je concatène) des résultats du plugin FORMidable. Je n’ai donc pas de longitude, latitude mais une adresse que je transmets à Googlemaps par le biais du Geocoder, qu’il a la politesse de traduire en point sur ma carte.

    Sur GMAP, tout fonctionnait bien, jusqu’à ce que je me rende compte que passés les dix inscrits, les suivants n’apparaissaient pas, pour une raison qui m’échappe complétement le maximum de points simultanés que j’ai réussi à atteindre est de 11, mais la plupart de temps pendant mes tests j’aboutissais à 8 points. Sans que je sache s’il y a une restriction du côté de google ou un bug dans le plugin ou autre chose, en tous cas le problème ne semble pas venir des données saisies dans la base.

    Une idée ? Besoin d’autres infos pour mieux cerner le problème ? C’est un spip 2.1.12 et GMAP dans sa dernière version stable.

    Merci d’avance !

    • Et pendant que j’y suis, voilà le code de mes geomarkers, ça peut peut-être aider...

      <BOUCLE_article(ARTICLES){id_article}>
      <div style="position: relative; display: block; width: 634px; height: 400px;">
      [(#GEOMAP{id_article,zoom=8,fond=physic})]
      </div>
      </BOUCLE_article>
      
      #SET{espace,' '}
      <BOUCLE_reponses_selection(spip_formulaires_reponses){statut=publie}{id_formulaire=1}{par id_formulaires_reponse}>
      <BOUCLE_rue(spip_formulaires_reponses_champs){id_formulaires_reponse}{nom=input_9}>
      #SET{rue,(#VALEUR|stripslashes)}
      </BOUCLE_rue>
      <BOUCLE_cp(spip_formulaires_reponses_champs){id_formulaires_reponse}{nom=input_10}>
      #SET{cp,(#VALEUR|stripslashes)}
      </BOUCLE_cp>
      <BOUCLE_ville(spip_formulaires_reponses_champs){id_formulaires_reponse}{nom=input_11}>
      #SET{ville,(#VALEUR|stripslashes)}
      </BOUCLE_ville>
      <BOUCLE_prenom(spip_formulaires_reponses_champs){id_formulaires_reponse}{nom=input_2}>
      #SET{prenom,(#VALEUR|stripslashes)}
      </BOUCLE_prenom>
      <BOUCLE_nom(spip_formulaires_reponses_champs){id_formulaires_reponse}{nom=input_1}>
      #SET{nom,(#VALEUR|stripslashes)}
      </BOUCLE_nom>
      <BOUCLE_societe(spip_formulaires_reponses_champs){id_formulaires_reponse}{nom=input_3}>
      #SET{societe,(#VALEUR|stripslashes)}
      </BOUCLE_societe>
      <BOUCLE_boulot(spip_formulaires_reponses_champs){id_formulaires_reponse}{nom=input_4}>
      #SET{boulot,(#VALEUR|stripslashes)}
      </BOUCLE_boulot>
                [(#GEOMARKER{adresse=#GET{rue};#GET{cp};#GET{ville}, titre=#GET{prenom}#GET{espace}#GET{nom}, texte=#GET{boulot}&nbsp;&#40;#GET{societe}&#41;<br />#GET{ville}})]
      </BOUCLE_reponses_selection>
    • Bonjour,

      Il n’y a pas de limitation du nombre de points ajoutés sur la carte, pas voulue en tout cas. Les problèmes que j’ai rencontrés concernent le temps de calcul des squelettes quand il y a plus de 500 points, je travaille à améliorer les boucles pour la version 1 de GMap avec spip 3.

      La première chose à faire est de regarder dans la page générée le nombre d’appels à map.setMarker(). S’il en manque, le problème se situe côté serveur, dans les boucles qui entourent #GEOMARKER. S’il y en a autant qu’il devrait y en avoir, c’est que le problème se présente côté client, sur le navigateur qui interprète la page.

      Je crains que ce soit la deuxième possibilité. Et dans ce cas, peut-être le geocoder refuse-t-il des appels successifs et ne renvoie pas les coordonnées. Je n’ai pas testé l’ajout de plusieurs points par adresse parce que, pour moi, c’était surtout destiné à l’ajout d’un point isolé.
      Dans ce cas, vous pourriez peut-être faire les appels au geocoder dans le formulaire et renseigner les coordonnées dans des champs cachés pour les enregistrer dans la base.

      Tenez-moi au courant.

    • merci beaucoup pour votre réponse, et en effet il y a bien tous les appels à setMarker, et la console de firebug me renvoie invariablement un Zero à partir de 8 à 11 résultats. Je penche aussi pour une restriction du côté de google.

      Faudrait peut-être que je trouve un moyen d’envoyer les requêtes 5 par 5 avec un temps de latence, en ajax, j’ai essayé un peu dans ce sens là hier, mais sans grand résultat pour l’instant.

      Sinon oui la solution de géocoder les coordonnées dans la bdd au moment de l’inscription serait le plus propre mais là tout de suite j’ai la flemme et si je pouvais trouver une solution dans la direction que j’ai donnée jusqu’à maintenant je n’aurais pas l’impression d’avoir perdu mon temps, et ça c’est bon pour le moral :D

    Répondre à ce message

  • 7

    Bonjour

    Super plugin, merci.
    J’avais commencé à l’utiliser sous la branche 2.1 de spip.
    Une version compatible avec la 3.0 est-elle prévue ?

    • C’est prévu et ça arrivera un de ces jours puisque, utilisant moi-même GMap, je serai bien forcé de travailler la compatibilité. Mais je ne peux pas donner de date parce que j’ai moins le temps d’y travailler en ce moment. Si quelqu’un veut contribuer, ce serait avec plaisir...

      J’ai tout de même fait quelques tests et commencé à travailler l’intégration dans les menus et la déclaration du plugin. L’affichage des cartes dans la partie publique doit fonctionner. Par contre l’intégration dans la partie privée souffre de nombreux défauts et devrait être largement revue car elle était (visiblement) trop dépendante de l’implémentation de spip < 3.

      Parmi les évolutions prévues de GMap, la compatibilité spip 3 reste une priorité et deviendra cruciale dès la sortie officelle...

    • Super.

      Je ne suis pas assez caler en développement pour toucher à un code aussi avancé, mais je peux peut-être participer au débugage en faisant des tests avec la beta et en relevant des bugs.

      Je reste à votre disposition si celà peux aider.

    • Merci de la proposition. Je vous contacterai dès que j’aurai avancé.

    • Pour compléter le fil : j’ai commencé le portage en SPIP 3.

      Mais il y a évolutions bien tentante dans SPIP 3... et je vais en profiter pour apporter la plupart des améliorations que j’avais en tête sur GMap...

      Ça prendra un peu de temps mais je pense que ça faudra le coup d’attendre !

    • Parfait. On patiente.
      Au passage : y a-t-il une fonction déjà intégrée ou prévue pour localiser un article dans un rayon de x km autour d’un point défini ?
      Merci

    • Je me posais justement des questions sur l’implémentation d’un critère de distance :

      • Il y a plein de cas d’utilisation où l’on voudrait sélectionner les points proches, d’ailleurs c’est déjà utilisé en interne pour rechercher les « voisins » temporels.
      • Mais on représente ces points sur une carte rectangulaire, il me semble donc plus pertinent de le faire sur un interval latitude/longitude, sinon on verra un rond de points sur la carte et rien sur les côtés.
      • Pour le plupart des besoins, l’information la plus pertinente sera la distance sur route, donc tout à fait autre chose.
      • Il me semble qu’on aura besoin d’une distance réelle que dans quelques cas très particuliers sur des données techniques et pas forcément pour afficher le résultat sur la carte.

      Je me trompe probablement... Si vous avez des cas d’utilisation de distance « à vol d’oiseau » ça m’intéresserais de les lire, ça me donnerait une idée plus précise des possibilités. Est-ce que de simple zone rectangulaires suffisent, ou non ?

    • Bonjour

      La proposition me parait logique. pas vraiment besoin d’un rayon, l’affichage d’une zone rectangulaire est très bien. Effectivement dans mon cas l’info la plus pertinente est la distance par la route, mais pas nécessaire.

    Répondre à ce message

  • 5
    Massimo

    Un nouveau erreur ,
    je ne comprends pas pourquoi....il se presente sur le SVR pas sur mon pc....

    May 09 08:30:12 124.115.0.102 (pid 4339) Erreur dans la lecture du fichier plugins/gmap/themes/gmap/system.gmd, Erreur "Empty document" (4) at line 1
    May 09 08:34:30 93.45.212.69 (pid 15242) Erreur dans la lecture du fichier plugins/gmap/themes/gmap/system.gmd, Erreur "Empty document" (4) at line 1
    May 09 08:34:45 93.45.212.69 (pid 15949) Erreur dans la lecture du fichier plugins/gmap/themes/gmap/gmap-marker-rubrique.gmd, Erreur "Empty document" (4) at line 1
    May 09 08:34:46 93.45.212.69 (pid 15949) Erreur dans la lecture du fichier plugins/gmap/themes/gmap/gmap-marker-article.gmd, Erreur "Empty document" (4) at line 1
    May 09 08:34:50 93.45.212.69 (pid 15949) Erreur dans la lecture du fichier plugins/gmap/themes/gmap/system.gmd, Erreur "Empty document" (4) at line 1

    L’effect est que la map n’affiche pas su la partie privée. Sur la partie public les maps vont en attente.....
    j’ai controllé les permissions sur les repertoires et tout est ok....
    Mistère...

    Ciao
    Massimo

    • Massimo

      C’est interessante que sur prive_spip.log il devient comme ça

      May 09 08:40:21 93.45.212.69 (pid 25717) Erreur dans la lecture du fichier ../plugins/gmap/themes/gmap/priveActive.gmd, Erreur "Empty document" (4) at line 1

      Au contraire sur gmap.log il etait comme dans mon message precedente...

      Ciao Massimo

    • Bonjour Massimo,

      Le fichier priveActive.gmd est utilisé la partie privée, les autres ne doivent être utilisés que sur la partie publique. Ça doit expliquer la différence.

      Maintenant, pour l’accès aux fichiers, peut-être un problème de chemin absolu/relatif, ou les droits de lecture depuis le PHP ?

      Fabrice

    • Massimo

      Merci.
      Je vais chercher mieux le pourquoi ce nuit ... :(

    • Massimo

      Trouvé !

      Il depends des fichiers .gmd

      Ces fichiers ont des characters ’mauvaises’ au start qui fait aller le parser xml en erreur
      Example
      <?xml v

      C’est vraiment strange, je l’ai trouvé avec un log du serveur, pas avec des editors.
      En fait, le seul editor qui me les montre est HTML-Kit.
      Tous les autres qui j’utilise (PSPAD, PRogrammers Notepad 2, Notepad ++) ne le montrent pas, ni moins en HEX.

      En effect j’ai des problemes avec tes sources. Avec PSPAD tous les char accenté de certsain fichiers crèent des problèmes (et ne sont pas visualisés, peut etre un fait de charset ? Quel utilises-tu ?

      Je vais re-editer les gmd avec HTML- Kit :)
      Peux-tu verifier ?

      Ciao Massimo

    • Les fichiers sont encodés en utf-8, avec BOM, c’est ce qui passe avant. Avec Notepad++ il faut faire « convertir en utf-8 (sans BOM) » pour les supprimer.

      Les fichiers XML sont en utf-8 parce qu’ils le déclarent en entête.... Je pense que je peux les convertir sans soucis en utf-8 sans BOM. 

      Les autres fichiers de sources sont en ANSI, le charset doit être qqchose comme Windows-1252.

      Je ne livre pas tout de suite : trop tard...

      Fabrice

    Répondre à ce message

  • 1
    Massimo

    Bonsoir (nuit :( ) Fabrice.

    Je te signale un bug sur la personalisation des marquers.
    Si on utilise des gmd du type gmap-marker-[object]-[type_point].gmd cela ne marche pas.

    Le problème est sur inc/geomap-geoloc.php.
    Quand on va rechercher les fichiers basés sur type_point le code utilise une variable ($type_point) qui n’est pas initialisée en place de la variable du contexte ($contexte[’type_point’] ).

    Il faut substituer ligne 434

    if (!$type_point || (strlen($type_point) == 0) ||

    avec

    if (!$contexte[’type_point’] || (strlen($contexte[’type_point’]) == 0) ||

    et, plus bas, lignes 442 - 443

    $name = $type_point ;
    if (!$type_point || (strlen($type_point) == 0) ||

    avec

    $name = $contexte[’type_point’] ;
    if (!$contexte[’type_point’] || (strlen($contexte[’type_point’]) == 0) ||

    je pense que c’est tout...

    Ciao
    Massimo

    • Effectivement !

      Le problème est que j’ai une modif en cours sur ces fic hiers, alors je ne peux pas corriger tout de suite...

      Je vois ça sous peu.

      Fabrice

    Répondre à ce message

  • 3

    Bonjour,
    J’ai installé Gmap sur un serveur Amen, mais cela ne fonctionne pas :
    quand je me rend sur : ecrire/ ?exec=configurer_gmap
    Il me répond : configurer_gmap : Accès interdit
    Ce qui est un peu fort, étant logué en admin 1...
    D’ailleurs l’icon gmap n’apparait pas au survol de configuration.
    J’ai du coup mis les droits à 777 sur l’ensemble du plugin, mais rien n’y fait.
    Je suis en spip 2.1.13 et Gmap 0.2.1
    La base sql à un moteur InnoDB, cela peut-il venir de la ???
    J’utilise souvent ce plugin, sur plusieurs sites, et je n’ai jamais eu ce problème...

    Merci pour vos lumières, car moi la je sèche et désespère...

    • Re-bonjour,
      En complément de mon premier message, il arrive parfois, après avoir vidé le cache, d’avoir cette erreur :

      Fatal error : Call to undefined function gmap_est_actif() in /htdocs/public/www/plugins/gmap/gmap_pipeline.php on line 36

      La chose curieuse, c’est qu’en modifiant gmap_autoriser.php (autoriser omnireso plutot que webmaster), le bouton apparait bien, mais ensuite la même erreur arrive (configurer_gmap : Accès interdit).
      C’est comme si gmap ne me considérait pas comme webmaster...

    • Re-re-bonjour !

      Suite et fin de ce fil :
      J’ai activé via le couteau suisse la déclaration des webmestres, et tout a fonctionné.
      Donc il y a bien un souci de reconnaissance de l’auteur 1 en tant que webmestre.

      Bonne journée !

      Sam

    • Bonjour,

      Pour le problème avec gmap_est_actif(), c’est dû au fait que le fichier contenant la fonction n’a pas encore été chargé au moment de l’appel. C’est un problème connu dont il a été question plusieurs fois sur spip-zone à propos d’autres plugins. Ce n’est pas vraiment bloquant puisqu’il suffit d’un F5 pour que tout revienne dans l’ordre. J’essayerai tout de même de forcer le chargement de la fonction depuis le pipeline.

      En ce qui concerne l’autre problème, je n’ai pas d’idée à priori. GMap ne gère pas les autorisations, il se contente de limiter le paramétrage en utilisant la fonction autoriser(« webmestre ») comme un peu partout.
      Je n’ai jamais rencontré ce problème (et il ne m’a jamais été remonté), donc il peut ya avoir deux explications :

      • Soit c’est dû à une évolution de la gestion des autorisations dans SPIP 2.1.13. Je ne l’ai pas encore testé mais si c’est le cas, je devrai retrouver le problème rapidement.
      • Soit c’est dû à l’hébergement que vous utilisez. Ça serait plus exotique et je n’aurai aucune chance de reproduire le problème.

      Je vous tiens au courant si je trouce qqchose.

      Fabrice

    Répondre à ce message

  • 1

    Bonjour,

    J’utilise jusqu’à présent GIS. Est-ce que GMap en est une évolution ? J’ai (presque) lu toute cette page sans arriver à comprendre les différences..

    merci
    dd

    • Excellente question...

      D’abord historiquement, GIS2 et GMap, sont partis de GIS1 pour améliorer le fonctionnement, notamment permettre de géolocaliser tous les objets de SPIP. GIS2 et GMap ont été développés en parallèle, sans se connaitre et ils ont été publiés à peu près en même temps.

      Du coup, c’est vrai que c’est un peu balot d’avoir deux plugins différents.
      Alors, pour tenter le comparatif :

      -  Les deux offrent la possibilité de géolocaliser tous les objets.

      -  GIS2 permet d’éditer des points indépendants puis de les récupérer sur les objets. On peut associer un libellé au point et ce libellé apparait dans les bulles. Un ou plusieurs points peuvent être associés à un objet SPIP.

      -  Pour GMap, les points représentent un objet de SPIP et le contenu des bulles est construit par un squelette à partir de l’objet associé. On peut créer plusieurs points par objet et leur associer un type.

      -  GMap va beaucoup plus loin que GIS2 dans le paramétrage des cartes, des points et bulles. Le paramétrage des carte peut se faire depuis la partie privée du site, l’apparence des points peut être spécifique à un objet, une rubrique et un type de point. Le contenu des bulles peu aussi être paramétré selon les mêmes critères.

      -  En ce qui concerne l’interface de géolocalisation c’est selon les goûts... Moi je me sers beaucoup de la fonction « voisins » de GMap.

      -  Pour les performances, GIS2 est plus léger pour le serveur. GMap a évolué pour permettre de désactiver une partie des moyens de spécialisation des points et des bulles qui sont assez lourds.

      Pour l’avenir, une fusion des deux plugins a déjà été évoquée, on s’y mettra probablement un jour.

      J’espère que ça vous aidera à faire un choix !

    Répondre à ce message

  • 2

    Bonjour,
    Attention le plugin génère des warning « Call-time pass-by-reference has been deprecated ».
    (visiblement, pour être à jour : enlever le « & » côté appel et le mettre côté « function(...) ».
    par exemple pour la fonction _gmap_recurse_fils

    Il y a t-il un correctif de prévu ?

    • C’est corrigé sur spip-zone (révision 59891). Le zip sera bientôt à jour.

      J’ai cherché les appels par référence, je ne crois pas en avoir manqué mais on ne sait jamais. SVP signalez-moi d’autres éventuels problèmes : avec le PHP 5.2 de mon hébergeur point de warnings !

    • Pas d’autres soucis ?

    Répondre à ce message

  • 2

    Maintenant que le plugin fonctionne merveilleusement bien, j’ai une petite question « boucle ».

    J’ai une carte générale qui affiche tous les lieux de concerts d’un groupe dans le monde (1000), et chaque point renvoit à l’article qui présent le concert. Sur chaque page d’article, il y a une carte avec le point précis du lieu de ce concert.

    Je souhaiterais sous la carte afficher, par le biais d’une boucle, les lieux « proches » où le groupe a joué (disons le même pays, la même zone).

    Est-il possible de construire ça ? Avec quelle boucle, et quel critère pour fixer la « proximité » ?

    • Je n’ai pas mis de critère de proximité dans GMap. Peut-être à l’avenir...

      Par contre, il est tout à fait possible de faire une boucle GEOPOINTS, de lui mettre des critères sur la latitude et la longitude, puis d’utiliser la balise #GEOMARKER pour ajouter les points sur la carte.
      Un critère sera surtout utile pour gérer le passage 180° à -180° et pour réutiliser des coordonnées du contexte.

      Pour ce qui est de sélectionner les points dans un même pays, une des évolutions prévues est d’utiliser le geocoder pour ajouter ces informations sur un point... Il sera alors facile d’ajouter ce critère dans une boucle. Mais ce n’est pas actuellement dans mes priorités donc ça risque de traîner un peu.

      J’ai démarré des modifs pour accélerer la requête sur les points. Elle est un peu longue quand on atteint le millier de point. On peut diminuer le temps de calcul si on suppose que tous les points du même type affichés utiliseront la même icone et la même info-bulle. C’est à mon avis la majorité des cas.
      J’intégrerai un critère de proximité quand je livrerai cette modification.

    • Eh bien merci, j’ai trouvé en attendant une autre solution. Je trouve vraiment ce plugin déjà tr !s bien en l’état. Fluide, pratique, et facile à installer et utiliser.

    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