-1

Ich habe derzeit ein Array von gmarker Objekten und es gibt doppelte gmarkers für den gleichen Ort (Breite und Länge), aber mit verschiedenen Info-Fenstern. Das ist in Ordnung, aber ich möchte Marker-Cluster verwenden und diese Orte nur einmal darstellen.Schleife durch ein Array von gmarker-Objekten und behält nur eindeutige Positionen?

Gibt es eine Möglichkeit, das Array durchzulaufen und vielleicht ein weiteres Array zu erstellen, das nur eindeutige Positionen enthält? (Breitengrad, Längengrad)

Ich habe versucht, so etwas wie dieses:

  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; 
       } 
      } 

Antwort

0

Es gibt mehrere Wege, es zu tun, aber einer von ihnen ist nur einen „Schlüssel“ auf der Grundlage der latlng jeder Markierung zu schaffen, check-in Ihr neues Objekt (nicht Array) uniqueCustomers, wenn der Schlüssel bereits gesetzt ist, und wenn nicht die Markierung zu uniqueCustomers hinzufügen.

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

Vielen Dank! das hat perfekt funktioniert! – Olis

+0

Gern geschehen;) Bitte prüfen Sie diese Antwort als gut, damit Leute mit dem gleichen Problem leicht sehen können, dass dies die Antwort ist. –

+0

Da sind wir, danke nochmal :) – Olis

Verwandte Themen