Tutorials
Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.
Javascript: Google Maps: Marker verschieben, wenn mehrere auf derselben Position liegen
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