Ostern ist verregnet, die Frau mit Singen oder
ihrem Heiland beschäftigt und meine ersten Tests mit
wx.MemoryDC() zeigten ein deutlich flüssigeres
Scroll-Verhalten.
Daher also jetzt direkt die Version 2.0 hinterher, bei der ich
die Planung mal gleich in html erfasse.
Rückgabe |
Name |
Zweck |
Init oder Parameter-Änderung
|
||
- |
__init__(sizeXY, posLL, zoomLvl, borderTiles) | Zusammenfassung der drei folgenden
Funktionenen |
- |
setCenter(posLL) | Geo-Koordinate auf Fenster-Mittelpunkt einstellen |
- |
setSize(newSizeXY) |
Fenster-Größenänderung verarbeiten |
- |
setZoom(zoomLvl, mousePosXY) |
Zoom-Level mit Fixpunkt ändern |
Service-Funktionen
|
||
posLL |
getLatLonForPixel(posXY) | Liefert zu Pixel-Koordinaten die Geo-Koordinaten |
posXY |
getPixelForLatLon(posLL) |
Liefert zu Geo-Koordinaten die Pixel-Koordinaten |
distXY |
distanceLatLonToPixel(pos1LL, pos2LL) |
Liefert den Pixel-Abstand von zwei Geo-Koordinaten |
(pos1LL, pos2LL) | getVisibleRectangle() |
Liefert die Fenster-Eckpunkte als Geo-Koordinaten |
- |
getZoomAndCenterForAllPointsVisible(listLL) |
Ändert Zoom-Level und Karten-Ausschnitt gemäß einer Liste von Geo-Koordinaten. |
Darstellungs-Funktionen
|
||
needs_refresh |
drawMap() | Karte aufbereiten |
- |
loadTracks(tracks(LL)) |
Tracks in der Karte aufnehmen [[(lat, lon),
(lat, lon), ...], ...] |
- |
unloadTracks() |
Tracks aus der Karte löschen |
- |
setTrackPen(pen) |
den wx.Pen zur Track-Darstellung einstellen |
- |
loadPoints(list(LL)) |
Punkte auf Karte zeichnen [((lat, lon), radius, color, text), (), ...] |
- |
unloadPoints() | Points auf der Karte löschen |
- |
doMoveMap(distXY) |
Karten-Ausschnitt verschieben (in Pixeln) |
- |
endMoveMap() |
Aktuelle Kartenverschiebung als neue Basis einstellen |
(bmp, distXY) | getBitmap() |
Karte (ggf. + Track + Points liefern) |
Problem: |
drawMap() hat noch nicht alle Tiles. |
Lösung: |
drawMap() liefert needs_refresh=True,
Aufrufer prüft via Timer und ruft bei needs_refresh==True
self.Refresh() auf. OSMscr2 macht den Test auf needs_refresh==True jetzt ebenfalls - und zwar in dem Test, ob ein neues Bitmap erstellt werden muss. |
Problem: |
bei doMoveMap() wird die Bitmap verlassen. |
Lösung: |
analog zur v1.2 -> es wird eine leere
Fläche angezeigt |
Idee: |
für eine pointList sollte die Klasse zu einer
posXY melden können, ob posXY über einem point[n] liegt. |
Idee: |
Point-Listen sollten vor der Übergabe an den
dc.DrawCirclePoint() noch insofern gekürzt werden, dass nur
sichtbare Koordinaten berücksichtigt werden. Bei Tracks wird sowas eher nix bringen, weil die im Stück an dc.DrawLines() übergeben werden. Aber vielleicht sollten zumindest solche Tracks ausgeblendet werden, die komplett außerhalb des Fensters liegen. Das bräuchte pro Track die Bestimmung und Speicherung des konvexen Rechtecks. |
USE_DB=False
werden stattdessen nur drei Demo-Koordinaten mit Popup-Text
eingetragen, damit das Script auch ohne die DB getestet werden kann.