Add possibility to show/hide a marker after its creation without having to delete/recreate it.

This commit is contained in:
Holt59 2018-02-25 16:43:37 +01:00
parent 9ae576a058
commit 422a3267ca
3 changed files with 28 additions and 4 deletions

View File

@ -46,9 +46,13 @@ public class BasicDrawing extends JPanel implements Drawing {
// Image of the marker
protected BufferedImage image;
// Visible?
protected boolean visible;
public BasicMarkerTracker(Point point, BufferedImage image) {
this.point = point;
this.image = image;
this.visible = true;
}
@Override
@ -62,6 +66,12 @@ public class BasicDrawing extends JPanel implements Drawing {
BasicDrawing.this.repaint();
}
@Override
public void setVisible(boolean visible) {
this.visible = visible;
BasicDrawing.this.repaint();
}
@Override
public void delete() {
BasicDrawing.this.markers.remove(this);
@ -151,10 +161,12 @@ public class BasicDrawing extends JPanel implements Drawing {
// Draw markers
for (BasicMarkerTracker mtracker: markers) {
BufferedImage img = mtracker.image;
int px = this.projx(mtracker.getPoint().getLongitude());
int py = this.projy(mtracker.getPoint().getLatitude());
g.drawImage(img, px - img.getWidth() / 2, py - img.getHeight(), this);
if (mtracker.visible) {
BufferedImage img = mtracker.image;
int px = this.projx(mtracker.getPoint().getLongitude());
int py = this.projy(mtracker.getPoint().getLatitude());
g.drawImage(img, px - img.getWidth() / 2, py - img.getHeight(), this);
}
}
}

View File

@ -69,6 +69,11 @@ public class MapViewDrawing extends MapView implements Drawing {
MapViewDrawing.this.getLayerManager().getLayers().add(this.marker);
}
@Override
public void setVisible(boolean visible) {
this.marker.setVisible(visible);
}
@Override
public void delete() {
MapViewDrawing.this.getLayerManager().getLayers().remove(marker);

View File

@ -14,6 +14,13 @@ public interface MarkerTracker {
*/
public void moveTo(Point point);
/**
* Show or hide this marker - A marker should be visible when created.
*
* @param visible true to show the marker, false to hide.
*/
public void setVisible(boolean visible);
/**
* Delete this marker.
*/