Create OverlayTracker as a prent of MarkerTracker to allow tracking of other objects.
This commit is contained in:
@@ -38,10 +38,7 @@ public class BasicDrawing extends JPanel implements Drawing {
|
||||
*/
|
||||
private static final long serialVersionUID = 96779785877771827L;
|
||||
|
||||
public class BasicMarkerTracker implements MarkerTracker {
|
||||
|
||||
// Point of the marker.
|
||||
private Point point;
|
||||
public class BasicOverlayTracker implements OverlayTracker {
|
||||
|
||||
// Image of the marker
|
||||
protected BufferedImage image;
|
||||
@@ -49,23 +46,11 @@ public class BasicDrawing extends JPanel implements Drawing {
|
||||
// Visible?
|
||||
protected boolean visible;
|
||||
|
||||
public BasicMarkerTracker(Point point, BufferedImage image) {
|
||||
this.point = point;
|
||||
public BasicOverlayTracker(BufferedImage image) {
|
||||
this.image = image;
|
||||
this.visible = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Point getPoint() {
|
||||
return point;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void moveTo(Point point) {
|
||||
this.point = point;
|
||||
BasicDrawing.this.repaint();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visible) {
|
||||
this.visible = visible;
|
||||
@@ -80,6 +65,29 @@ public class BasicDrawing extends JPanel implements Drawing {
|
||||
|
||||
};
|
||||
|
||||
public class BasicMarkerTracker extends BasicOverlayTracker implements MarkerTracker {
|
||||
|
||||
// Point of the marker.
|
||||
private Point point;
|
||||
|
||||
public BasicMarkerTracker(Point point, BufferedImage image) {
|
||||
super(image);
|
||||
this.point = point;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Point getPoint() {
|
||||
return point;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void moveTo(Point point) {
|
||||
this.point = point;
|
||||
BasicDrawing.this.repaint();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Default path color.
|
||||
public static final Color DEFAULT_PATH_COLOR = new Color(255, 0, 255);
|
||||
|
||||
|
@@ -27,6 +27,7 @@ import org.mapsforge.map.awt.graphics.AwtGraphicFactory;
|
||||
import org.mapsforge.map.awt.util.AwtUtil;
|
||||
import org.mapsforge.map.awt.view.MapView;
|
||||
import org.mapsforge.map.datastore.MapDataStore;
|
||||
import org.mapsforge.map.layer.Layer;
|
||||
import org.mapsforge.map.layer.Layers;
|
||||
import org.mapsforge.map.layer.cache.TileCache;
|
||||
import org.mapsforge.map.layer.hills.HillsRenderConfig;
|
||||
@@ -46,37 +47,47 @@ public class MapViewDrawing extends MapView implements Drawing {
|
||||
*/
|
||||
private static final long serialVersionUID = 8606967833704938092L;
|
||||
|
||||
public class MapViewMarkerTracker implements MarkerTracker {
|
||||
public class MapViewOverlayTracker implements OverlayTracker {
|
||||
|
||||
// Marker associated.
|
||||
private Marker marker;
|
||||
protected Layer layer;
|
||||
|
||||
public MapViewOverlayTracker(Layer marker) {
|
||||
this.layer = marker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visible) {
|
||||
this.layer.setVisible(visible);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete() {
|
||||
MapViewDrawing.this.getLayerManager().getLayers().remove(layer);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
public class MapViewMarkerTracker extends MapViewOverlayTracker implements MarkerTracker {
|
||||
|
||||
public MapViewMarkerTracker(Marker marker) {
|
||||
this.marker = marker;
|
||||
super(marker);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Point getPoint() {
|
||||
Marker marker = (Marker) super.layer;
|
||||
return new Point(marker.getLatLong().getLongitude(), marker.getLatLong().getLatitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void moveTo(Point point) {
|
||||
Marker marker = (Marker) this.layer;
|
||||
this.delete();
|
||||
Marker marker = new Marker(convertPoint(point), this.marker.getBitmap(), this.marker.getHorizontalOffset(),
|
||||
this.marker.getVerticalOffset());
|
||||
this.marker = marker;
|
||||
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);
|
||||
marker = new Marker(convertPoint(point), marker.getBitmap(), marker.getHorizontalOffset(),
|
||||
marker.getVerticalOffset());
|
||||
this.layer = marker;
|
||||
MapViewDrawing.this.getLayerManager().getLayers().add(this.layer);
|
||||
}
|
||||
|
||||
};
|
||||
|
@@ -2,7 +2,7 @@ package org.insa.graphics.drawing;
|
||||
|
||||
import org.insa.graph.Point;
|
||||
|
||||
public interface MarkerTracker {
|
||||
public interface MarkerTracker extends OverlayTracker {
|
||||
|
||||
/**
|
||||
* @return The point associated with this marker.
|
||||
@@ -14,16 +14,4 @@ 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.
|
||||
*/
|
||||
public void delete();
|
||||
|
||||
}
|
||||
|
17
src/main/org/insa/graphics/drawing/OverlayTracker.java
Normal file
17
src/main/org/insa/graphics/drawing/OverlayTracker.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package org.insa.graphics.drawing;
|
||||
|
||||
public interface OverlayTracker {
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
public void delete();
|
||||
|
||||
}
|
Reference in New Issue
Block a user