-1

J'ai actuellement un tableau d'objets gmarker et il y a des gmarkers dupliqués pour le même emplacement (latitude et longitude) mais avec des fenêtres d'informations différentes. C'est bien, mais je veux utiliser des grappes de marqueurs et ne représenter qu'une seule fois ces emplacements.Parcourez la matrice d'objets gmarker et ne gardez que des emplacements uniques?

Existe-t-il un moyen de faire une boucle dans la matrice et éventuellement de créer une autre matrice qui ne contient que des emplacements uniques? (Latitude, longitude)

je tentais quelque chose comme ceci:

  var size = 0; 
      var uniqueCustomers = [] 
      for (var i = 0; i < gmarkers.length; i++) { 
       if (uniqueCustomers.indexOf(gmarkers[i]) < 0) { 
        uniqueCustomers[size] = gmarkers[i]; 
        size = size + 1; 
       } 
      } 

Répondre

0

Il y a plusieurs façon de le faire, mais l'un d'eux crée juste une « clé » sur la base latlng de chaque marqueur, archivez votre nouvel objet (pas tableau) uniqueCustomers si la clé est déjà définie, et si ce n'est pas le cas, ajoutez le marqueur à uniqueCustomers.

var gmarkers = [] ; 
 

 
var coords = [ 
 
    {lat : 42.1, lng:3.4}, 
 
    {lat : 42.2, lng:3.4}, 
 
    {lat : 42.3, lng:3.4}, 
 
    {lat : 42.4, lng:3.4}, 
 
    {lat : 42.1, lng:3.4}, 
 
    {lat : 42.2, lng:3.4} 
 
] ; 
 

 
for (var i in coords) 
 
{ 
 
    gmarkers.push(new google.maps.Marker({ 
 
     position:coords[i] 
 
    })) ; 
 
} 
 

 
var size = 0; 
 
var uniqueCustomers = {} ; 
 

 
// Loop on the 6 markers 
 
for (var i = 0; i < gmarkers.length; i++) { 
 
    // Create a key to identify tje position of the marker 
 
    var key = gmarkers[i].position.lat() + ',' + gmarkers[i].position.lng() ; 
 
    
 
    // If this key is not already on uniqueCustomers, then we add the marker with this key to uniqueCustomers, so at the next loops if it exists we don't add it another time 
 
    if (typeof uniqueCustomers[key] == 'undefined') 
 
    uniqueCustomers[key] = gmarkers[i] ; 
 
} 
 

 
console.log('gmarkers.length',gmarkers.length) ; // 6 
 
console.log('uniqueCustomers.length',Object.keys(uniqueCustomers).length) ; // 4 
 
console.log('uniqueCustomers',Object.keys(uniqueCustomers)) ; // Display only uniques
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maps.googleapis.com/maps/api/js"></script>

+0

Merci beaucoup! Cela a fonctionné parfaitement! – Olis

+0

De rien;) veuillez considérer cette réponse comme bonne afin que les gens ayant le même problème puissent facilement voir que c'est la réponse. –

+0

Nous y voilà, merci encore :) – Olis