android maps: How to Long Click a Map?

后端 未结 8 1813
遥遥无期
遥遥无期 2020-12-02 12:41

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

8条回答
  •  清歌不尽
    2020-12-02 12:57

    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.

提交回复
热议问题