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 // Image of the marker
protected BufferedImage image; protected BufferedImage image;
// Visible?
protected boolean visible;
public BasicMarkerTracker(Point point, BufferedImage image) { public BasicMarkerTracker(Point point, BufferedImage image) {
this.point = point; this.point = point;
this.image = image; this.image = image;
this.visible = true;
} }
@Override @Override
@ -62,6 +66,12 @@ public class BasicDrawing extends JPanel implements Drawing {
BasicDrawing.this.repaint(); BasicDrawing.this.repaint();
} }
@Override
public void setVisible(boolean visible) {
this.visible = visible;
BasicDrawing.this.repaint();
}
@Override @Override
public void delete() { public void delete() {
BasicDrawing.this.markers.remove(this); BasicDrawing.this.markers.remove(this);
@ -151,12 +161,14 @@ public class BasicDrawing extends JPanel implements Drawing {
// Draw markers // Draw markers
for (BasicMarkerTracker mtracker: markers) { for (BasicMarkerTracker mtracker: markers) {
if (mtracker.visible) {
BufferedImage img = mtracker.image; BufferedImage img = mtracker.image;
int px = this.projx(mtracker.getPoint().getLongitude()); int px = this.projx(mtracker.getPoint().getLongitude());
int py = this.projy(mtracker.getPoint().getLatitude()); int py = this.projy(mtracker.getPoint().getLatitude());
g.drawImage(img, px - img.getWidth() / 2, py - img.getHeight(), this); g.drawImage(img, px - img.getWidth() / 2, py - img.getHeight(), this);
} }
} }
}
protected void setBB(double long1, double long2, double lat1, double lat2) { protected void setBB(double long1, double long2, double lat1, double lat2) {

View File

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

View File

@ -14,6 +14,13 @@ public interface MarkerTracker {
*/ */
public void moveTo(Point point); 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. * Delete this marker.
*/ */