23.10.2012, 21:17
Hallo Christian,
ich hab mit der neusten Version mal etwas herumgespielt.
Ganz so einfach bekomme ich den Effekt nicht mehr hin. Trotzdem ist er leider noch da. Welche Umstände dazu führen, kann ich aber nicht genau sagen. Wenn man etliche Verschiebe- und Zoomändervorgänge gemacht hat zeigt er plötzlich die Linie nicht an.
Wenn ich dann die Karte verschiebe oder hin- und herzoome bewirkt das keine Änderung.
Ich hatte den Effekt sogar ab Zoomstufe 16 (nicht 17) und einer deutlich kleineren Datei hinbekommen. Wie man das schnell und nachvollziehbar reproduzieren kann, kann ich nicht sagen.
Im Log sieht man, dass das Script die Verschiebung/Zoomänderung erkannt hat.
Evtl. könntest Du eine (temporäre) Logausgabe im Prerelease einbauen:
- wenn du die Notifikation der Verschiebung oder Zoomänderung im Java-Code erkannt hast
- wenn der Cache gelöscht wurde (oder eben nicht - ggf. mit Grund warum nicht)
- wenn eine Neuberechnung der Anzeigepunkte erfolgt
Da der Downscale selbst sehr gut funktioniert, kann es in meinen Augen eigentlich nur noch am Cache oder dem Trigger liegen. Evtl. kann man mit den Logausgaben ein System erkennen, warum es manchmal funktioniert und manchmal nicht. Ansonsten kann ich auch am Wochenende debuggen.
Und noch eine andere Info. Auch wenn ich gesagt habe, dass der Downscale sehr gut funktioniert (was auch absolut richtig ist), so habe ich in meinen Daten eine Stelle gefunden, bei der der letzte Punkt fehlt (der dann die Linie ausserhalb des Sichtbereiches zieht). Die Stelle kann ich nicht genau erklären, da sie in einem sehr tiefen Zoom erst sichtbar wird. Hier werde ich am Wochenende mal selbst debuggen. Das ist sicher nur irgendein kleiner Index-Fehler oder kleiner/kleiner gleich Fehler.
Gruß
Thomas
(23.10.2012, 10:46)routeconverter Wrote: Ich hab's: nach den letzten Änderungen wird nicht mehr das Ergebnis der Douglas-Peucker-Optimierung gecacht, sondern das Ergebnis aller Reduktionsschritte. Dumm nur, wenn einer der Schritte die sichtbaren Wegpunkte ermittelt und alle andere verwirft und man dann den Kartenausschnitt verschiebt: keine Wegpunkte mehr da, da keine im Cache. Nun versuche ich den Cache zu verwerfen, wenn die Karte verschoben wird und potentiell andere Wegpunkte sichtbar werden. Eine Heuristik, die meistens ganz gut funktioniert (BaseMapView#centerChanged). Bitte probier mal die neueste Vorabversion aus.
ich hab mit der neusten Version mal etwas herumgespielt.
Ganz so einfach bekomme ich den Effekt nicht mehr hin. Trotzdem ist er leider noch da. Welche Umstände dazu führen, kann ich aber nicht genau sagen. Wenn man etliche Verschiebe- und Zoomändervorgänge gemacht hat zeigt er plötzlich die Linie nicht an.
Wenn ich dann die Karte verschiebe oder hin- und herzoome bewirkt das keine Änderung.
Ich hatte den Effekt sogar ab Zoomstufe 16 (nicht 17) und einer deutlich kleineren Datei hinbekommen. Wie man das schnell und nachvollziehbar reproduzieren kann, kann ich nicht sagen.
Im Log sieht man, dass das Script die Verschiebung/Zoomänderung erkannt hat.
Evtl. könntest Du eine (temporäre) Logausgabe im Prerelease einbauen:
- wenn du die Notifikation der Verschiebung oder Zoomänderung im Java-Code erkannt hast
- wenn der Cache gelöscht wurde (oder eben nicht - ggf. mit Grund warum nicht)
- wenn eine Neuberechnung der Anzeigepunkte erfolgt
Da der Downscale selbst sehr gut funktioniert, kann es in meinen Augen eigentlich nur noch am Cache oder dem Trigger liegen. Evtl. kann man mit den Logausgaben ein System erkennen, warum es manchmal funktioniert und manchmal nicht. Ansonsten kann ich auch am Wochenende debuggen.
Und noch eine andere Info. Auch wenn ich gesagt habe, dass der Downscale sehr gut funktioniert (was auch absolut richtig ist), so habe ich in meinen Daten eine Stelle gefunden, bei der der letzte Punkt fehlt (der dann die Linie ausserhalb des Sichtbereiches zieht). Die Stelle kann ich nicht genau erklären, da sie in einem sehr tiefen Zoom erst sichtbar wird. Hier werde ich am Wochenende mal selbst debuggen. Das ist sicher nur irgendein kleiner Index-Fehler oder kleiner/kleiner gleich Fehler.
Gruß
Thomas
