23.01.2012, 18:27
(21.01.2012, 18:18)lundefugl Wrote: 1. ich zoome relativ weit in den Track hinein. Nun klicke ich in der Positionsliste auf einen Punkt, der ausserhalb des Anzeigebereiches liegt und wohl auch in dem Bereich, wo die Route der Anzeige abgeschnitten ist.
Die Karte verschiebt sich nun schön zu diesem Punkt und markiert ihn auch. Was allerdings nicht angezeigt wird ist der Track. Hier fehlt wohl der Trigger für die Aktualisierung der Anzeige für den Track.
Den gibt es, doch in BaseMapView wird heftig optimiert um nicht zu häufig neuzeichnen zu müssen:
Quote: Matcher centerChangedMatcher = CENTER_CHANGED_PATTERN.matcher(callback);
if (centerChangedMatcher.matches()) {
if (visibleNorthEast != null && visibleSouthWest != null && visibleNorthWest != null && visibleSouthEast != null) {
BaseNavigationPosition mapNorthEast = getNorthEastBounds();
BaseNavigationPosition mapSouthWest = getSouthWestBounds();
if (contains(mapNorthEast, mapSouthWest, visibleNorthEast) ||
contains(mapNorthEast, mapSouthWest, visibleNorthWest) ||
contains(mapNorthEast, mapSouthWest, visibleSouthEast) ||
contains(mapNorthEast, mapSouthWest, visibleSouthWest)) {
synchronized (notificationMutex) {
haveToRepaintRouteImmediately = true;
routeUpdateReason = "repaint not visible positions";
notificationMutex.notifyAll();
}
}
}
return true;
}
Deine Nutzungssequenz wird explizit wegoptimiert, ich weiß nur nicht mehr warum ;-)
(21.01.2012, 18:18)lundefugl Wrote: 2. beim selektieren der Punkte in der Positionsliste werden die Markierungen schön in der Karte angezeigt. Kommen nun Punkte ausserhalb des Bereiches hinzu, so verschiebt sich die Karte dahin nicht. Das ist auch OK. Verschiebt man nun manuell die Karte, so verschiebt sie sich automatisch wieder auf den Bereich des ersten Punktes der Positionsliste zurück, wenn weitere Punkte mit Shift in der Positionsliste selektiert werden.
[..]
Mein Vorschlag wäre, dass sich die automatische Kartenverschiebung beim Focus auf der Positionsliste nicht nach dem ersten selektierten Punkt richtet, sondern nach dem Punkt, auf dem der Zellfocus liegt (zumindest dann, wenn der Focus innerhalb des selektierten Bereiches liegt).
Was auch OK wäre, wenn die automatische Verschiebung nur nicht greift, wenn die Zelle des Objektes mit dem Focus im aktuellen Anzeigebereich liegt.
Oha, das klingt kompliziert. Im Moment wird auf die erste selektierte Position zentriert. Wäre nicht das gewünschte Verhalten die auf zuletzt selektierte Position zu zentrieren? Mit der hat man ja zuletzt interagiert. Das ist wohl das, was Du mit dem Zellfokus und dem aktuellen Anzeigebereich meinst, oder?
--
Christian
Christian