Marker examples: add (map) long press events #32

This commit is contained in:
Emux 2016-11-22 20:37:05 +02:00
parent 1133edb83d
commit 16fa42d462
2 changed files with 41 additions and 5 deletions

View File

@ -23,11 +23,16 @@ import android.widget.Toast;
import org.oscim.backend.canvas.Bitmap;
import org.oscim.core.GeoPoint;
import org.oscim.event.Gesture;
import org.oscim.event.GestureListener;
import org.oscim.event.MotionEvent;
import org.oscim.layers.Layer;
import org.oscim.layers.TileGridLayer;
import org.oscim.layers.marker.ItemizedLayer;
import org.oscim.layers.marker.MarkerItem;
import org.oscim.layers.marker.MarkerSymbol;
import org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
import org.oscim.map.Map;
import java.util.ArrayList;
import java.util.List;
@ -50,6 +55,9 @@ public class MarkerOverlayActivity extends BitmapTileMapActivity
super.onCreate(savedInstanceState);
mBitmapLayer.tileRenderer().setBitmapAlpha(0.5f);
// Long press receiver
mMap.layers().add(new LongPressLayer(mMap));
/* directly load bitmap from resources */
Bitmap bitmap = drawableToBitmap(getResources(), R.drawable.marker_poi);
@ -99,13 +107,35 @@ public class MarkerOverlayActivity extends BitmapTileMapActivity
else
item.setMarker(null);
Toast toast = Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT);
toast.show();
Toast.makeText(this, "Tap " + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
@Override
public boolean onItemLongPress(int index, MarkerItem item) {
return false;
if (item.getMarker() == null)
item.setMarker(mFocusMarker);
else
item.setMarker(null);
Toast.makeText(this, "Long press " + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
class LongPressLayer extends Layer implements GestureListener {
LongPressLayer(Map map) {
super(map);
}
@Override
public boolean onGesture(Gesture g, MotionEvent e) {
if (g instanceof Gesture.LongPress) {
GeoPoint p = mMap.viewport().fromScreenPoint(e.getX(), e.getY());
Toast.makeText(MarkerOverlayActivity.this, "Long press " + p, Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
}

View File

@ -76,13 +76,19 @@ public class MarkerLayerTest extends GdxMapApp implements ItemizedLayer.OnItemGe
else
item.setMarker(null);
System.out.println(item.getTitle());
System.out.println("Tap " + item.getTitle());
return true;
}
@Override
public boolean onItemLongPress(int index, MarkerItem item) {
return false;
if (item.getMarker() == null)
item.setMarker(mFocusMarker);
else
item.setMarker(null);
System.out.println("Long press " + item.getTitle());
return true;
}
public static void main(String[] args) {