Hallo Christian,
ich hab noch etwas herumgespielt und glaube das Auslösen des einen Effektes erklären zu können. Es passiert wohl, wenn man die Karte oft verschiebt (um in meinem Fall dem Track zu folgen) und dann den Zoomlevel ändert.
In meiner Version mit Logausgaben sieht man dann, dass keine Neuberechnung stattfindet und in BaseMapView#centerChanged beide contains()-Aufrufe trotzdem immer true zurückgeben, wenn man die Karte verschiebt.
Da du in BaseMapView#centerChanged nur den Cache für den aktuellen Zoom löschst, habe ich bei mir mal "reducedPositions.clear();" statt "reducedPositions.remove(getZoom());" eingebaut. Damit bekomme ich den Fehler auf die Schnelle nicht mehr hin.
Ich vermute daher mal, dass man bei BaseMapView#zoomChanged auch noch eine Bereichsprüfung einbauen muss, ob der Cache vor dem Repaint evtl. verworfen werden muss oder nicht.
Gruß
Thomas
Hallo Christian,
auch das zweite Problem habe ich gefunden - bzw. du hattest ja schon die richtige Ahnung.
Das passiert bei tiefen Zoomlevels, wenn der eine Punkt im real sichtbaren Bereich ist und der nächste Punkt ausserhalb des erweiterten Bereiches liegt.
Ich habe hier mal meine Lösung vom letzten Mal eingebaut, die dafür sorgt, dass immer der erste Punkt ausserhalb des Bereiches noch mit am Leben bleibt. Damit war dann der Fehler weg.
Ich werde dir dafür nochmal einen neuen Pull-Request schicken.
Wundere dich nicht über meinen Branchnamen. Ich hab nicht aufgebapsst und leider in meinem master-Branch alles gemacht.
Was du über die Commit-Historie auch sehen wirst, ist dass ich einen Unittest für filterEveryNthPosition gemacht habe. Die Funktion hatte ich eigentlich zuerst im Verdacht, da sie auch nicht ganz korrekt gearbeitet hat.
Gruß
Thomas
ich hab noch etwas herumgespielt und glaube das Auslösen des einen Effektes erklären zu können. Es passiert wohl, wenn man die Karte oft verschiebt (um in meinem Fall dem Track zu folgen) und dann den Zoomlevel ändert.
In meiner Version mit Logausgaben sieht man dann, dass keine Neuberechnung stattfindet und in BaseMapView#centerChanged beide contains()-Aufrufe trotzdem immer true zurückgeben, wenn man die Karte verschiebt.
Da du in BaseMapView#centerChanged nur den Cache für den aktuellen Zoom löschst, habe ich bei mir mal "reducedPositions.clear();" statt "reducedPositions.remove(getZoom());" eingebaut. Damit bekomme ich den Fehler auf die Schnelle nicht mehr hin.
Ich vermute daher mal, dass man bei BaseMapView#zoomChanged auch noch eine Bereichsprüfung einbauen muss, ob der Cache vor dem Repaint evtl. verworfen werden muss oder nicht.
Gruß
Thomas
Hallo Christian,
auch das zweite Problem habe ich gefunden - bzw. du hattest ja schon die richtige Ahnung.
Das passiert bei tiefen Zoomlevels, wenn der eine Punkt im real sichtbaren Bereich ist und der nächste Punkt ausserhalb des erweiterten Bereiches liegt.
Ich habe hier mal meine Lösung vom letzten Mal eingebaut, die dafür sorgt, dass immer der erste Punkt ausserhalb des Bereiches noch mit am Leben bleibt. Damit war dann der Fehler weg.
Ich werde dir dafür nochmal einen neuen Pull-Request schicken.
Wundere dich nicht über meinen Branchnamen. Ich hab nicht aufgebapsst und leider in meinem master-Branch alles gemacht.
Was du über die Commit-Historie auch sehen wirst, ist dass ich einen Unittest für filterEveryNthPosition gemacht habe. Die Funktion hatte ich eigentlich zuerst im Verdacht, da sie auch nicht ganz korrekt gearbeitet hat.
Gruß
Thomas
