Problème d'info bulle vide dans GMap

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Tout nouveau sur Drupal et reprenant un projet déjà développé, je galère pas mal!
Mon premier problème se situe au niveau de l'affichage de données dans le module GMap. Les lieux indiqués s'affichent bien, mais les « infos bulles » sont vides.
Pour information, j'ai un « type de contenu » spécifique où j'insère les données suivant un type particulier (cases à cocher), emplacement (coordonnées)...
Ensuite, j'ai une « vue / page » dans laquelle j'ai défini dans les paramètres de base un style « GMap », 2 champs « node : titre » et « emplacement », et 3 filtres « node : type : lieu », « publié », et « contenu : type= référence ».

Si quelqu'un a déjà eu ce type de problème, merci de m'indiquer la solution trouvée.

Merci d'avance,
Skiz

Forum : 
Version de Drupal : 

c'est un problème connu avec le module, j'ai la flemme de te retrouver le post qui en parle sur drupal.org et puis il est très long et fastidieux a parcourir pour trouver la solution.

donc je vais te la donner directement ce sera plus simple ^^

dans le fichier /gmap/gmap_plugin_style_gmap.inc

voici la fonction render dans mon module gmap Les hack concernant l'infobulle sont annoté HACK infobulle
l'autre hack permet d'afficher dans la même bulle des point de coordonnées identique (Je sais que ce n'est pas ce qu'il y a de plus propre mais ne me pendez pas en place publique)

<?php
 
  
function render() {
    if (empty(
$this->row_plugin)) {
     
vpr('gmap_plugin_style_gmap: Missing row plugin');
      return;
    }

   
$markername = isset($this->options['markertype']) ? $this->options['markertype'] : 'drupal';

   
$markertypes = variable_get('gmap_node_markers', array());
    if (
$this->options['markers'] == 'nodetype') {
     
$markertypes = variable_get('gmap_node_markers', array());
    }

   
// Group the rows according to the grouping field, if specified.
   
$sets = $this->render_grouping($this->view->result, $this->options['grouping']);

   
// Render each group separately and concatenate.  Plugins may override this
    // method if they wish some other way of handling grouping.
   
$output = '';
   
// correction pour permettre l'affichage des infos dans les infosbulles
   
$this->view->row_index = 0;
   
$arr_lat = array();
   
$c = 0;
    foreach (
$sets as $title => $records) {
     
$markers = array();
     
$offsets = array();
        foreach (
$records as $label => $row) {
       
$lat = (float)$row->gmap_lat;
       
$lon = (float)$row->gmap_lon;
        if (!empty(
$lat) && !empty($lon)) {
          if (
$this->options['markers'] == 'nodetype') {
            if (isset(
$markertypes[$row->gmap_node_type])) {
             
$markername = $markertypes[$row->gmap_node_type];
            }
          }
          else if (
$this->options['markers'] == 'taxonomy') {
            if (!empty(
$row->gmap_node_marker)) {
             
$markername = $row->gmap_node_marker;
            }
          }
          if (!isset(
$offsets[$markername])) {
           
$offsets[$markername] = 0;
          }
         
/* HACK 03-02-2010: combine les données latitude et longitude pour ajouter les noeuds ayant des coordonnées déja trouvées
           dans le même conteneur que le précédent */
         
if(in_array($lat .'/'. $lon, $arr_lat)){
           
// inverse le tableau pour récupérer l'id correspondant au marker déja créé
           
$tmp = array_flip($arr_lat);
           
$item = $tmp[$lat .'/'. $lon];
           
$markers[$item]['text'] = $markers[$item]['text'] . $this->row_plugin->render($row);
         
// si pas trouvé de coordonnées correspondante on créé un marker normal et on incrémente le compteur
         
}else{
           
$arr_lat[$c] = $lat .'/'. $lon;
           
$markers[] = array(
             
'latitude' => $lat,
             
'longitude' => $lon,
             
'markername' => $markername,
             
'offset' => $offsets[$markername],
             
'text' => $this->row_plugin->render($row),
            );
           
$c++;
          }
         
$offsets[$markername]++;

        }
   
// HACK infobulle : correction pour permettre l'affichage des infos dans les infosbulles
       
$this->view->row_index++;
      }
      if (!empty(
$markers)) { // Don't draw empty maps.
       
$map = gmap_parse_macro($this->options['macro']);
       
$map['markers'] = $markers;
       
$map['id'] = gmap_get_auto_mapid();
       
$output .= theme($this->theme_functions(), $this->view, $this->options, $map, $title);
      }
     
// HACK infobulle :  correction pour permettre l'affichage des infos dans les infosbulles
     
$this->view->row_index++;
    }
    return
$output;
  }
?>