Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

Javascript: Google Maps: Marker verschieben, wenn mehrere auf derselben Position liegen

#Tutorials#Javascript

Bei einer Suche, die Ergebnisse auf einer Google Maps Karte anzeigt, hatte ich ab und zu das Problem, dass zwei oder mehr Marker auf ein und derselben Position lagen. Da man aber nur einen dieser Marker anklicken kann, musste ich eine Lösung für dieses Problem finden. Meine Lösung war es, die mindestens doppelten Marker herauszufinden und diese dann um ein paar Grad zu verschieben. Das verfälscht leider ein bisschen die richtige Position des Ergebnisses, aber ist immerhin besser, als nur einen Marker zu sehen.

Hier meine Funktion:

// Beispiel Array mit groben Koordinaten und einer Dopplung
var allitems= [
 {lat: 5.1, lon 4.9},
 {lat: 5.0, lon 4.9},
 {lat: 5.2, lon 4.9},
 {lat: 5.1, lon 4.9},
];

// Doppelte finden und versetzen
var lls = [];
for(var i = 0; i < allitems.length; i++){
  var ll = allitems[i].lat+','+allitems[i].lon;
  // nicht doppelt, füg den Punkt hinzu
  if(lls.indexOf(ll) == -1){
    lls.push(ll);
  } else {
    // versetze den Punkt um 0.00005 Grad in Breite und Länge
    allitems[i].lat = allitems[i].lat + 0.00005;
    allitems[i].lon = allitems[i].lon + 0.00005;
    
    // Füge den neuen Punkt dem Array hinzu, damit auch für diesen keine Dopplung bestehen kann 
    ll = allitems[i].lat+','+allitems[i].lon;
    lls.push(ll);
  }
}

Nachdem die For-Schleife gelaufen ist, sind alle doppelten Marker leicht versetzt. Somit kann man diese wieder anklicken.

Ich hoffe ich konnte weiterhelfen!


Kommentare

Es gibt noch keine Kommentare. Sei der Erste!

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.