Autore Topic: ContextMenu su MapView  (Letto 548 volte)

Offline Vincent

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +2
    • Mostra profilo
ContextMenu su MapView
« il: 08 Settembre 2011, 01:00:57 CEST »
0
Devo fare in modo che cliccando su una MapView (su qualsiasi punto della mappa) compaia un ContextMenu.
Il codice funziona ma il problema è che il ContextMenu compare anche se si tocca la mappa per spostarla (quindi tocco prolungato e movimento/scroll della mappa).
Come posso risolvere? Ecco il codice

Codice (Java): [Seleziona]
class S5Overlay extends com.google.android.maps.Overlay {
               
        @Override
        public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when)  {
                super.draw(canvas, mapView, shadow);                  
                 
            //---translate the GeoPoint to screen pixels---
            Point screenPts = new Point();
            mapView.getProjection().toPixels(p, screenPts);
           
          //---add the marker---
            Bitmap bmp = BitmapFactory.decodeResource(
                getResources(), R.drawable.posizione_icona);            
            canvas.drawBitmap(bmp, screenPts.x-25, screenPts.y-50, null);
           
            return true;

        }
 
        @Override
        public boolean onTouchEvent(MotionEvent event, MapView mapView)
        {  
            //---when user lifts his finger---
            if (event.getAction() == 1 && event.getAction() != 2) {  
                Log.d(TAG,"Toccato!");
                point = mapView.getProjection().fromPixels(
                    (int) event.getX(),
                    (int) event.getY());
               
                //registerForContextMenu((MapView) findViewById(R.id.mapView));
                //openContextMenu((MapView) findViewById(R.id.mapView));
               
                Log.d(TAG,"ccord:" +point.getLatitudeE6() / 1E6);
               
                    Toast.makeText(getBaseContext(),
                        point.getLatitudeE6() / 1E6 + "," +
                        point.getLongitudeE6() /1E6 ,
                        Toast.LENGTH_SHORT).show();
                   
                    return true;
            }   else {                        
            return false;
           
        }
    }
  }

Codice (Java): [Seleziona]
@Override  
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
       super.onCreateContextMenu(menu, v, menuInfo);  
       menu.setHeaderTitle("Context Menu");  
       menu.add(0, v.getId(), 0, "Crea POI");  
    }
   
    @Override  
    public boolean onContextItemSelected(MenuItem item) {  
        if(item.getTitle()=="Crea POI"){
                function1(item.getItemId());
                Log.d(TAG,"OK!!");
        }  
        else {return false;}  
    return true;  
    }