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 :

Réinitialisation de marqueurs [Google Maps]


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conducteur de travaux
    Inscrit en
    Août 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de travaux

    Informations forums :
    Inscription : Août 2014
    Messages : 14
    Par défaut Réinitialisation de marqueurs
    Bonjour,

    Je souhaite réinitialiser les marqueurs affichés sur ma carte lorsque j'actionne un événement Jquery qui appelle ma base de donnée.

    Je souhaiterais que les marqueurs affichés sur ma carte disparaissent et que les nouveaux apparaissent. Or je n'arrive à rien, j'ai tenté de les supprimer avec la technique setMap et setOptions, ca fonctionne mais impossible de faire apparaitre les nouveaux. Je recherche la bonne technique sur internet mais je m'en sors pas. Quelqu'un pourrait-il me donner un coup de main?

    Voici mon code actuel sans tentative de réinitialisation:
    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
    ('.day').click(function(){
    var date=$('#date').val();
    $.post(
        'connexion.php', // Mon fichier cible côté serveur.
    	'date=' + date, 
    	function (data){
    		var it=data.lat;
     
    	        for(var i=0,I=it.length;i<I; i++){ 
    		   var markers=[[data.dj[i],data.lat[i],data.lng[i]],]; // Récupération des données sélectionnées en fonction de ma date
     
    		   addmarker(markers[i]); // Affichage des marqueurs
    	        }
     
    		function addmarker(latlng){
    			var lat=data.lat[i];
    			var lng=data.lng[i];
    			marker = new google.maps.Marker({
    			  position: new google.maps.LatLng(lat,lng),
    			  map: map,
    			});
     
    		}
     
    	},
    	'json'
    	);
    });
    }

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 213
    Par défaut
    Bonjour,
    je ne vois pas de gestion des markers...par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var tabMarkers = []; // pour stockage des marqueurs crées
    /*
    *  désaffecte et supprime les marqueurs
    */
    function clearMarkers(){
      var i, nb = tabMarkers.length;
      for( i=0; i < nb; i++){
        tabMarkers[i].setMap(null);
      }
      tabMarkers = [];
    }
    il te suffit ensuite de "clearer" les marqueurs avant la création de nouveaux, cela pourrait donner

    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
    clearMarkers();
    for (var i = 0, I = it.length; i < I; i++) {
      var markers = [ [data.dj[i], data.lat[i], data.lng[i]], ]; // Récupération des données sélectionnées en fonction de ma date
      addmarker(markers[i]); // Affichage des marqueurs
    }
     
    function addmarker(latlng) {
      var lat = data.lat[i];
      var lng = data.lng[i];
      var oMarker = new google.maps.Marker({
        position: new google.maps.LatLng(lat, lng),
        map: map,
      });
      tabMarkers.push( oMarker);
     
    }
    PS: j'ai un peu de mal à comprendre la boucle

  3. #3
    Membre averti
    Homme Profil pro
    Conducteur de travaux
    Inscrit en
    Août 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de travaux

    Informations forums :
    Inscription : Août 2014
    Messages : 14
    Par défaut
    J'essaye de faire une gestion de marqueurs comme tu me l'as conseillé. Je fais un "clear" sur eux, mais je n'arrive à rien. J'ai le même problème lorsque je clique les anciens marqueurs ne s'effacent pas.

    Pour ce qui est de la boucle elle me sert à inscrire mes données dans mon tableau markers=[], de façon ordonnée.

    Mon code a probablement de quoi être amélioré. J'ai du mal à tout comprendre, je tourne en rond car j'ai l'impression que ce code serait censé fonctionner.

    Voici où j'en suis (pas beaucoup plus loin):
    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
     
    $('.day').click(function(){
     
        var date=$('#date').val();
        $('#resultat').html(date);
     
        var markers=[];
        function clearMarkers(){
            var i, nb = markers.length;
            for( i=0; i < nb; i++){
                 markers[i].setMap(null);
            }
         markers = [];
         }
     
    clearMarkers();
     
    $.post(
        'connexion.php', // Mon fichier cible côté serveur.
    	'date=' + date, 
    	function (data){
     
    	    var it=data.lat; //variable me permettant de récupérer la longueur max de mon indentation
     
    	    for(var i=0,I=it.length;i<I; i++){ 
    		 markers=[[data.dj[i],data.lat[i],data.lng[i]],]; // Récupération des données Json en tableau ordonné
     
    		     addmarker(markers[i]);		  // Affichage des marqueurs
    	        }
     
    		function addmarker(latlng){
    			var lat=data.lat[i];
    			var lng=data.lng[i];
    			var marker = new google.maps.Marker({
    			  position: new google.maps.LatLng(lat,lng),
    			  map: map,
    			});
    			markers.push(marker);  //(je ne comprend pas l'action de ".push")
     
       		        var infowindow = new google.maps.InfoWindow();
     
                            google.maps.event.addListener(marker, 'click', (function(marker, i) {
                            return function() {
    		            map.setZoom(8);
    		            map.setCenter(marker.getPosition());
                                infowindow.setContent(data.dj[i]);
                                infowindow.open(map, marker);
                               }
                            })(marker, i));
     
    	       }
     
    	   },
    	'json'
    	);
    });

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 213
    Par défaut
    Ton appel à clearMarker est mal positionné dans ton code il doit l'être avant création des nouveaux marqueurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      $.post('connexion.php', // Mon fichier cible côté serveur.
      'date=' + date, function (data) {
        // on clear avant la création de nouveaux
        clearMarkers();
     
        var it = data.lat; //variable me permettant de récupérer la longueur max de mon indentation

    Attention
    aux noms des variables, tu as 2 fois markers.

  5. #5
    Membre averti
    Homme Profil pro
    Conducteur de travaux
    Inscrit en
    Août 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de travaux

    Informations forums :
    Inscription : Août 2014
    Messages : 14
    Par défaut
    J'ai bien pris en compte ce que tu m'as dis, j'ai placé la fonction "clear" juste avant la création des marqueurs et j'ai modifié la variable markers en tabMarkers. Seulement ca ne fonctionne toujours pas, les marqueurs précédent s'affichent toujours.

    Ci-joint mon code après les modifications:
    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
     
    $('.day').click(function(){
     
        var date=$('#date').val();
        $('#resultat').html(date);
     
        var tabMarkers=[];
        function clearMarkers(){
            var i, nb = tabMarkers.length;
            for( i=0; i < nb; i++){
                 tabMarkers[i].setMap(null);
            }
         tabMarkers = [];
         }
     
     
    $.post(
        'connexion.php', // Mon fichier cible côté serveur.
    	'date=' + date, 
    	function (data){
     
                clearMarkers();
     
    	    var it=data.lat; //variable me permettant de récupérer la longueur max de mon indentation
     
    	    for(var i=0,I=it.length;i<I; i++){  
    		     addmarker();		  // Affichage des marqueurs
    	        }
     
    		function addmarker(latlng){
    			var lat=data.lat[i];
    			var lng=data.lng[i];
    			var marker = new google.maps.Marker({
    			  position: new google.maps.LatLng(lat,lng),
    			  map: map,
    			});
    			tabMarkers.push(marker); 
     
       		        var infowindow = new google.maps.InfoWindow();
     
                            google.maps.event.addListener(marker, 'click', (function(marker, i) {
                            return function() {
    		            map.setZoom(8);
    		            map.setCenter(marker.getPosition());
                                infowindow.setContent(data.dj[i]);
                                infowindow.open(map, marker);
                               }
                            })(marker, i));
     
    	       }
     
    	   },
    	'json'
    	);
    });
    PS: j'ai aussi supprimé "var markers=[[data.dj[i],data.lat[i],data.lng[i]],];" qui ne servait en effet à rien.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 213
    Par défaut
    Seulement ca ne fonctionne toujours pas, les marqueurs précédent s'affichent toujours.
    une chose nous manque quand même est que tu sauvegardes les marqueurs lors de leur première création, on n'a pas cette partie du code.

    A chaque création il te faut faire un tabMarkers.push(marker);.

    Par curiosité, pourrais tu nous donner un exemple de ce que retourne ton POST comme données, function (data){, objet JSON certes mais contenant quoi?
    J'ai du mal à coprendre ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var it=data.lat; //variable me permettant de récupérer la longueur max de mon indentation
     
        for(var i=0,I=it.length;i<I; i++){
    	     addmarker();		  // Affichage des marqueurs
         }

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

Discussions similaires

  1. réinitialiser un DBLookupCombobox
    Par piscine dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/06/2007, 19h50
  2. réinitialiser clé primaire
    Par guegré dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 20/08/2004, 11h36
  3. réinitialisation de la scène
    Par aguion dans le forum OpenGL
    Réponses: 5
    Dernier message: 21/07/2004, 22h29
  4. [langage] supprimer un # avec un . comme marqueur
    Par Cjules dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2004, 17h54
  5. Réinitialisation
    Par kacedda dans le forum C
    Réponses: 3
    Dernier message: 13/12/2002, 04h56

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