Autore Topic: Con onTouch perdo lo Zoom!  (Letto 738 volte)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Con onTouch perdo lo Zoom!
« il: 17 Maggio 2011, 17:52:08 CEST »
0
Ciao a tutti! Stavo seguendo questo tutorial:
   Utilizzo delle mappe di Google su Android - Parte 2 - Dev-Spark


Praticamente io voglio una volta aperta la mappa che cliccando su un punto mi aggiunga un Overlay (la mia puntina) e che mi visualizzi le coordinate in un toast.
Il problema è che non riesco a far riapparire i comandi per lo zoom in basso a destra!
Lascio il codice della mia classe..

Codice: [Seleziona]
public class Map_forPoint extends MapActivity implements OnTouchListener {

        MapView map;
        MapController mapCtrl;
        List<Overlay> mapOverlays;
        GeoPoint p;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
        setContentView(R.layout.map);

        map = (MapView) findViewById(R.id.mapView);
        mapOverlays = map.getOverlays();
        mapCtrl = map.getController();
       
        map.setClickable(true);

        map.setBuiltInZoomControls(true);

        mapCtrl.setZoom(12);
       
       
       
        p = new GeoPoint(44629360, 10906720);

        mapCtrl.animateTo(p);
        mapCtrl.setZoom(17);
       
       
        map.setOnTouchListener(this);
        map.setBuiltInZoomControls(true);

               

        }

        @Override
        public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                        p = map.getProjection().fromPixels((int) event.getX(),
                                        (int) event.getY());
                        Toast.makeText(getBaseContext(),
                                        p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6() / 1E6,
                                        Toast.LENGTH_SHORT).show();

                        mapOverlays.clear();
                        mapOverlays.add(new MapOverlay());

                        map.invalidate();
                }
                return true;
        }
       

        class MapOverlay extends Overlay {

                public MapOverlay() {
                }

                public void draw(Canvas canvas, MapView mapView, boolean shadow) {
                        super.draw(canvas, mapView, shadow);

                        // translate the GeoPoint to screen pixels
                        Point screenPoint = new Point();
                        mapView.getProjection().toPixels(p, screenPoint);

                        Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                                        R.drawable.map_pin);
                        canvas.drawBitmap(bmp, screenPoint.x - 12, screenPoint.y - 48, null);
                }
        }

        @Override
        protected boolean isRouteDisplayed() {
                return false;
        }

       
}

Ah e un ultima cosa: a che serve il metodo map.invalidate() alla finde del metodo ontouch???

Ciao ;-)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:Con onTouch perdo lo Zoom!
« Risposta #1 il: 17 Maggio 2011, 21:41:39 CEST »
0
Nessuno riesce ad aiutarmi?  sto impazzendo...!  o_O o_O

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:Con onTouch perdo lo Zoom!
« Risposta #2 il: 17 Maggio 2011, 21:54:29 CEST »
0
Sono riuscito a trovare una scappatoia per visualizzare lo zoom, anche se non scompare come vorrei dopo un po' ma rimane sempre visibile... posto l'XML:
Codice (XML): [Seleziona]
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <com.google.android.maps.MapView
                android:id="@+id/mapView"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:enabled="true"
                android:layout_centerInParent="true"
                android:clickable="true"
                android:apiKey="0wM-haBtmttemYsD7fF84QMCu7ZRGCFgscQktng" />


        <ZoomControls
                android:id="@+id/zoomControls1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentBottom="true"></ZoomControls>

</RelativeLayout>

Ora però permane un problema... come mai non riesco a fare in pan???
Penso sia un problema del metodo onTouch che mi interferisce con il pan...