How do I long click on a mapview so that a place marker appears at that point on the map?
I tried a couple ways without success:
1) Using setOnLongCl
ambrose,
I modified the demo of the library mapview-overlay-manager. to get this code running with a double tap gesture:
package de.android1.overlaymanager.demo;
import android.os.Bundle;
import android.widget.Toast;
import android.graphics.drawable.Drawable;
import android.view.MotionEvent;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MapController;
import com.google.android.maps.GeoPoint;
import de.android1.overlaymanager.*;
public class DemoView extends MapActivity {
MapView mapView;
MapController mapController;
OverlayManager overlayManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
overlayManager = new OverlayManager(getApplication(), mapView);
}
@Override
public void onWindowFocusChanged(boolean b) {
createOverlayWithListener();
}
public void createOverlayWithListener() {
//This time we use our own marker
final ManagedOverlay managedOverlay = overlayManager.createOverlay("listenerOverlay", getResources().getDrawable(R.drawable.marker));
for (int i = 0; i < 40; i = i + 3) {
managedOverlay.createItem(GeoHelper.geopoint[i], "Item" + i);
}
managedOverlay.setOnOverlayGestureListener(new ManagedOverlayGestureDetector.OnOverlayGestureListener() {
public boolean onZoom(ZoomEvent zoom, ManagedOverlay overlay) {
return false;
}
public boolean onDoubleTap(MotionEvent e, ManagedOverlay overlay, GeoPoint point, ManagedOverlayItem item) {
Drawable defaultmarker = getResources().getDrawable(R.drawable.marker);
ManagedOverlay managedOverlay = overlayManager.createOverlay(defaultmarker);
//creating some marker:
managedOverlay.createItem(point);
//registers the ManagedOverlayer to the MapView
overlayManager.populate();
Toast.makeText(getApplicationContext(), "You created a Marker!", Toast.LENGTH_LONG).show();
return true;
}
public void onLongPress(MotionEvent arg0, ManagedOverlay arg1) {
// TODO Auto-generated method stub
}
public void onLongPressFinished(MotionEvent arg0,
ManagedOverlay arg1, GeoPoint arg2, ManagedOverlayItem arg3) {
// TODO Auto-generated method stub
}
public boolean onScrolled(MotionEvent arg0, MotionEvent arg1,
float arg2, float arg3, ManagedOverlay arg4) {
// TODO Auto-generated method stub
return false;
}
public boolean onSingleTap(MotionEvent arg0, ManagedOverlay arg1,
GeoPoint arg2, ManagedOverlayItem arg3) {
// TODO Auto-generated method stub
return false;
}
});
overlayManager.populate();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
Hope it helps.