Autore Topic: onTouch mappa  (Letto 410 volte)

Offline crazygirl

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy ace
onTouch mappa
« il: 27 Ottobre 2011, 02:29:33 CEST »
0
Ciao a tutti, nella mia applicazione viene caricata una mappa in cui localizzo la mia posizione... solo che ho un problema...
quando sposto la mappa in un'altra posizione, mi ritorna subito la mia posizione centrata sullo schermo...
invece io vorrei che la mappa restasse nel punto in cui io l'ho spostata...

coma posso risolvere questo problema? :(

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:onTouch mappa
« Risposta #1 il: 27 Ottobre 2011, 13:28:05 CEST »
0
Dovresti postare il codice...

Comunque, una volta centrata la mappa devi disattivare il location listener, altrimenti continuerà a centrare la mappa ogni volta che verrà richiamato il metodo onLocationChanged() (sempre se ho azzeccato la logica che stati usando nell'applicazone).  ;-)
« Ultima modifica: 27 Ottobre 2011, 13:29:36 CEST da Verandi »

Offline crazygirl

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy ace
Re:onTouch mappa
« Risposta #2 il: 27 Ottobre 2011, 17:56:27 CEST »
0
Il problema è esattamente quello... Ora posto il codice...

Codice (Java): [Seleziona]
private void setCurrentLocation(Location location)
        {              
        if(location != null)
        {
                // Aggiorna la location
            Lat = location.getLatitude();
            Long = location.getLongitude();
           
                        int latitudeE6 = (int) Math.floor(Lat * 1.0E6);
                        int longitudeE6 = (int) Math.floor(Long * 1.0E6);
                       
                        GeoPoint p1 = new GeoPoint(latitudeE6, longitudeE6);
                        GeoPoint p2 = new GeoPoint(currentLatitude, currentLongitude);
                       
                        // Aggiorna la posizione corrente
                        currentLatitude = latitudeE6;
                        currentLongitude = longitudeE6;

                        // Sposta la posizione corrente sulla mappa di F_Map
                        F_Map.mapController.setCenter(p1);

                        // Calcola i metri appena fatti
                        float dist = Distance.getDistance(p1, p2) *1000;
                       
                        if(dist > 1) // maggiore di 1 metro
                        {                              
                                Toast.makeText(getApplicationContext(), "distance: "+dist,Toast.LENGTH_SHORT).show();
                               
                                try
                                {
                                        SendMyPositionToDB(currentLatitude, currentLongitude);

                                }
                                catch(IOException e)
                                {
                                        e.printStackTrace();
                                }                              
                        }
                       
                       
        }

Avevo pensato di ridefinire in metodo onTouch in modo che ad ogni tocco sullo schermo potesse restare la posizione da me stabilita.
Ma non riesco a disabilitare setCenter...  :-\

« Ultima modifica: 28 Ottobre 2011, 15:27:25 CEST da Ricky` »

Offline crazygirl

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy ace
Re:onTouch mappa
« Risposta #3 il: 28 Ottobre 2011, 15:19:30 CEST »
0
in realtà... mi basterebbe anche un metodo...che ogni volta che tocco lo schermo fa comparire un toast... :S

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:onTouch mappa
« Risposta #4 il: 28 Ottobre 2011, 15:27:11 CEST »
0
Dovrebbe bastare mettere la visualizzazione del Toast nell'onTouch, no?

Offline crazygirl

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy ace
Re:onTouch mappa
« Risposta #5 il: 28 Ottobre 2011, 17:25:55 CEST »
0
Ho messo questo metodo...


map.setOnTouchListener(new OnTouchListener()
        {
         @Override
         public boolean onTouch(View arg0, MotionEvent arg1)
         {
          Toast.makeText(getApplicationContext(), "toast", Toast.LENGTH_LONG).show();
          return true;
         }
        });


il problema è che ogni volta che tocco lo schermo... il toast non scompare... resta fisso sullo schermo...
mentre se metto return false... il toast compare una volta sola... quando clicco nuovamente sullo schermo il toast non riappare.... o_O

Offline crazygirl

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy ace
Re:onTouch mappa
« Risposta #6 il: 30 Ottobre 2011, 18:59:06 CET »
0
nessuno sa aiutarmi? :S

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:onTouch mappa
« Risposta #7 il: 30 Ottobre 2011, 22:26:51 CET »
0
Citazione
il problema è che ogni volta che tocco lo schermo... il toast non scompare... resta fisso sullo schermo...

Secondo me "sembra" che non scompaia, perchè viene richiamato più volte su ogni touch.
Ogni volta che avviene un "touch" sullo schermo gli eventi che vengono richiamati sono più di uno, è per questo che nel metodo onTouch, oltre alla View, viene passato anche un riferimento ad un oggetto MotionEvent, in modo da gestire i vari eventi.
Detto ciò, potresti visualizzare il Toast solo nell'ACTION_DOWN o nell'ACTION_UP in questo modo :

Codice (Java): [Seleziona]
map.setOnTouchListener(new OnTouchListener(){
         @Override
         public boolean onTouch(View view, MotionEvent event){
             if(event.getAction() == MotionEvent.ACTION_DOWN){
                 Toast.makeText(getApplicationContext(), "toast", Toast.LENGTH_LONG).show();
             }
             return true;
         }
});

Offline crazygirl

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy ace
Re:onTouch mappa
« Risposta #8 il: 31 Ottobre 2011, 01:41:38 CET »
0
ehmmmmm... funziona... ogni volta che clicco scrive "toast"...
ora il problema è che la mappa non si muove più O_O...