package org.osmdroid.views.overlay;
import org.osmdroid.events.MapEventsReceiver;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import org.osmdroid.views.Projection;
import android.content.Context;
import android.graphics.Canvas;
import android.view.MotionEvent;
/**
* Empty overlay than can be used to detect events on the map,
* and to throw them to a MapEventsReceiver.
* @see MapEventsReceiver
* @author M.Kergall
*/
public class MapEventsOverlay extends Overlay {
private MapEventsReceiver mReceiver;
/** Use {@link #MapEventsOverlay(MapEventsReceiver)} instead */
@Deprecated
public MapEventsOverlay(Context ctx, MapEventsReceiver receiver) {
this(receiver);
}
/**
* @param receiver the object that will receive/handle the events.
* It must implement MapEventsReceiver interface.
*/
public MapEventsOverlay(MapEventsReceiver receiver) {
super();
mReceiver = receiver;
}
@Override public void draw(Canvas c, MapView osmv, boolean shadow) {
//Nothing to draw
}
@Override public boolean onSingleTapConfirmed(MotionEvent e, MapView mapView){
Projection proj = mapView.getProjection();
GeoPoint p = (GeoPoint)proj.fromPixels((int)e.getX(), (int)e.getY());
return mReceiver.singleTapConfirmedHelper(p);
}
@Override public boolean onLongPress(MotionEvent e, MapView mapView) {
Projection proj = mapView.getProjection();
GeoPoint p = (GeoPoint)proj.fromPixels((int)e.getX(), (int)e.getY());
//throw event to the receiver:
return mReceiver.longPressHelper(p);
}
}