IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

regrouper des markers V3 [Google Maps]


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 98
    Par défaut regrouper des markers V3
    Bonjour
    Je rencontre un problème en essayant de regrouper un grand nombre de markeurs avec MarkerClusterer.
    Je declare un tableau de markeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var theMarker=[];
    var intCounter;
    Mes donnees proviennent d'un fichier XML que je lis avec JQuery comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     jQuery.get(urlMyXML, {}, function(data) {
      jQuery(data).find("point").each(function() {
       var marker = jQuery(this);
       latlng = new google.maps.LatLng(parseFloat(marker.attr("lat")),
                                        parseFloat(marker.attr("lng"))); 
       var monTxt =(marker.attr("name")); 
     
    	var theMarker(intCounter)=createMyMarker(latlng,monTxt );
         intCounter=intCounter+1;
    Ensuite,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var theMarker=createMyMarker(latlng,txt);
       	theMarker.push(theMarker);
    Puis, je crée une instance de la classe MarkerClusterer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    google.maps.event.addListenerOnce(map, 'bounds_changed', function()
    {     
    var markerclusterer = new MarkerClusterer(map, theMarker);
      });
    Mais, ce sont seulement la carte et les memes markeurs de Google qui s'affichent.
    Qu'est-ce qui ne va pas dans mon code, quelqu'un aurait une idee?
    Merci.
    Abel

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 227
    Par défaut
    Bonjour,
    je vois des erreurs de syntaxe dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var theMarker(intCounter)=createMyMarker(latlng,monTxt );
    intCounter=intCounter+1;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var theMarker(intCounter)
    ne veux rien dire...

    ...comme tu as déclaré par avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var theMarker=[];
    var intCounter;
    je présumes que tu souhaites empiler dans un tableau, dans ce cas il te faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     theMarker[intCounter ++]=createMyMarker(latlng,monTxt );
    plus simplement, sans mettre le mot clé var qui dans ce cas redéfinie une variable locale

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 98
    Par défaut
    Salut NoSmoking.

    Merci pour ta réponse.

    J'ai fait les corrections que tu m'as indiquées, cela fonctionne quand tout le code est groupé dans une seule fonction. Mais, pour les besoins de mon application je dois séparer le code en plusieurs fonctions: une fonction pour la creation de la carte, une autre pour le lecture de XML et une dernière pour creer les markeurs. En faisant cela le code ne fonctionne plus. Je ne vois pas la raison.
    Est-ce que si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      google.maps.event.addListenerOnce(map, 'bounds_changed', function() {     
          // Creating a MarkerClusterer object and adding the markers array to it
         var markerclusterer = new MarkerClusterer(map, theMarker);
     
        });
    dans une fonction séparée a une influence quelconque?
    Merci
    Abel

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 227
    Par défaut
    difficile à dire sans le code global pour voir et appréhender l'approche que tu veux mettre en place.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 98
    Par défaut
    Salut

    Voici le code complet de mon fichier JS. Dans cet état il fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    // JavaScript Document
     var markers = [];
     var urlMyXML="nancy.xml";
    function loadMap()
    {
    //
        var latlng = new google.maps.LatLng(48.65,6.157);
                    var option = {
                        zoom: 3,
                        center: latlng,
    					clickable: true,
                        mapTypeId: google.maps.MapTypeId.ROADMAP
                    }
                    map = new google.maps.Map(document.getElementById("map"), option);
     alert("Je vais lire XML");                 
     
      readXML();
     
     google.maps.event.addListenerOnce(map, 'bounds_changed', function() 
     {     
          // Creating a MarkerClusterer object and adding the markers array to it
         var markerclusterer = new MarkerClusterer(map, markers);
     
      });
     
    }
    //  ...........................................................
     
    function readXML()
    {
    jQuery.get(urlMyXML, {}, function(data) {
      jQuery(data).find("point").each(function() {
       var marker = jQuery(this);
       latlng = new google.maps.LatLng(parseFloat(marker.attr("lat")),
                                        parseFloat(marker.attr("lng")));
     
        marker = new google.maps.Marker({
              position: latlng,
    		  icon: "Media/images/National.png"
            });	
         google.maps.event.addListener(marker, 'mouseover', function() {        
     
    	   document.getElementById('txt_top').innerHTML = info;
    	   }); 
    	   //
    	 google.maps.event.addListener(marker, 'mouseout', function() {        
     
    	   document.getElementById('txt_top').innerHTML = txtDefault;
     
        }); 
       markers.push(marker);						
     
      });
     });	  
    }
    Avec tes modifications je n’ai pas réussi à le faire fonctionner séparée en plusieurs fonctions. Les Listeners dans la 2eme fonction ne fonctionnent pas dans ce cas alors qu'ils fonctionnent parfaitment dans le cas d'une seule fonction!?
    J’aimerais sortir aussi sortir les Listerners et les mettre dans une fonction séparée afin de lui envoyer des informations différentes selon le cas.
    Est-ce possible? Je suis ouvert à toute critique et/ou amélioration.
    Merci.
    Abel

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 227
    Par défaut
    après un regard rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    google.maps.event.addListener(marker, 'mouseover', function() {        
      document.getElementById('txt_top').innerHTML = info;
    }); 
     
    google.maps.event.addListener(marker, 'mouseout', function() {        
      document.getElementById('txt_top').innerHTML = txtDefault;
    });
    que valent info et textDefault, si ils ne sont pas définis le script plante

    si tu avais un lien pour bénéficier de l'ensemble

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. "Regrouper" des markers ?
    Par bahamut100 dans le forum APIs Google
    Réponses: 4
    Dernier message: 02/06/2010, 10h45
  2. Réponses: 3
    Dernier message: 11/07/2005, 16h20
  3. Regrouper des champs dans un GROUP BY
    Par kaiserazo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 11/07/2005, 09h43
  4. Regrouper des fichiers sous un même nom
    Par Azharis dans le forum C++
    Réponses: 7
    Dernier message: 22/06/2005, 13h05
  5. SQL - Regrouper des enregistrements...
    Par Régent dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/02/2005, 00h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo