mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-05 20:03:52 +00:00
boats now zoom when map is zoomed, also when paused
This commit is contained in:
1 parent
b630be9418
commit
1f799dd70e
1 file changed
+34
-15
+34
-15
@@ -203,6 +203,16 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
|
||||
@Override
|
||||
public void onZoomEnd(MapZoomEndEvent event) {
|
||||
mapZoomedOrPannedSinceLastRaceSelectionChange = true;
|
||||
Set<CompetitorDAO> competitorDAOsOfUnusedMarkers = new HashSet<CompetitorDAO>(boatMarkers.keySet());
|
||||
for (CompetitorDAO competitorDAO : getCompetitorsToShow()) {
|
||||
boolean usedExistingMarker = updateMarkerForCompetitor(competitorDAO);
|
||||
if (usedExistingMarker) {
|
||||
competitorDAOsOfUnusedMarkers.remove(competitorDAO);
|
||||
}
|
||||
}
|
||||
for (CompetitorDAO unusedMarkerCompetitorDAO : competitorDAOsOfUnusedMarkers) {
|
||||
map.removeOverlay(boatMarkers.remove(unusedMarkerCompetitorDAO));
|
||||
}
|
||||
}
|
||||
});
|
||||
map.addMapDragEndHandler(new MapDragEndHandler() {
|
||||
@@ -498,6 +508,28 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
|
||||
newMapBounds.extend(bounds.getNorthEast());
|
||||
newMapBounds.extend(bounds.getSouthWest());
|
||||
}
|
||||
boolean usedExistingMarker = updateMarkerForCompetitor(competitorDAO);
|
||||
if (usedExistingMarker) {
|
||||
competitorDAOsOfUnusedMarkers.remove(competitorDAO);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mapZoomedOrPannedSinceLastRaceSelectionChange && newMapBounds != null) {
|
||||
map.setZoomLevel(map.getBoundsZoomLevel(newMapBounds));
|
||||
map.setCenter(newMapBounds.getCenter());
|
||||
mapFirstZoomDone = true;
|
||||
}
|
||||
for (CompetitorDAO unusedMarkerCompetitorDAO : competitorDAOsOfUnusedMarkers) {
|
||||
map.removeOverlay(boatMarkers.remove(unusedMarkerCompetitorDAO));
|
||||
}
|
||||
for (CompetitorDAO unusedTailCompetitorDAO : competitorDAOsOfUnusedTails) {
|
||||
map.removeOverlay(tails.remove(unusedTailCompetitorDAO));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean updateMarkerForCompetitor(CompetitorDAO competitorDAO) {
|
||||
boolean usedExistingMarker = false;
|
||||
if (lastShownFix.containsKey(competitorDAO) && lastShownFix.get(competitorDAO) != -1) {
|
||||
GPSFixDAO lastPos = getBoatFix(competitorDAO);
|
||||
Marker boatMarker = boatMarkers.get(competitorDAO);
|
||||
@@ -506,7 +538,7 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
|
||||
map.addOverlay(boatMarker);
|
||||
boatMarkers.put(competitorDAO, boatMarker);
|
||||
} else {
|
||||
competitorDAOsOfUnusedMarkers.remove(competitorDAO);
|
||||
usedExistingMarker = true;
|
||||
// check if anchors match; re-use marker with setImage only if anchors match
|
||||
Point newAnchor = imageResources.getBoatImageTransformator(lastPos,
|
||||
selectedMapCompetitors.contains(competitorDAO)).getAnchor();
|
||||
@@ -526,20 +558,7 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mapZoomedOrPannedSinceLastRaceSelectionChange && newMapBounds != null) {
|
||||
map.setZoomLevel(map.getBoundsZoomLevel(newMapBounds));
|
||||
map.setCenter(newMapBounds.getCenter());
|
||||
mapFirstZoomDone = true;
|
||||
}
|
||||
for (CompetitorDAO unusedMarkerCompetitorDAO : competitorDAOsOfUnusedMarkers) {
|
||||
map.removeOverlay(boatMarkers.remove(unusedMarkerCompetitorDAO));
|
||||
}
|
||||
for (CompetitorDAO unusedTailCompetitorDAO : competitorDAOsOfUnusedTails) {
|
||||
map.removeOverlay(tails.remove(unusedTailCompetitorDAO));
|
||||
}
|
||||
}
|
||||
return usedExistingMarker;
|
||||
}
|
||||
|
||||
protected Marker createBuoyMarker(final MarkDAO markDAO) {
|
||||
|
||||
Reference in new issue
Block a user