Autore Topic: Mappe Multiple nella stessa app  (Letto 634 volte)

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Mappe Multiple nella stessa app
« il: 30 Settembre 2015, 12:27:48 CEST »
0
Ciao,
vorrei aggiungere due mappe in una stessa applicazione, ho cercato in giro ma non ho trovato nulla che potesse aiutarmi.
In pratica ho provato ad aggiungere due mappe in due layout differenti ma quando passo da un layout all'altro mi ritrovo che le due mappe si sovrappongono  :-X :-X

Potreste aiutarmi??
Grazie

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Mappe Multiple nella stessa app
« Risposta #1 il: 30 Settembre 2015, 12:54:47 CEST »
0
Se metti qualche riga di codice magari possiamo aiutarti.

Due mappe in due layout differenti cosa significa? Due Activity diverse? Due Fragment diversi?
I numeri contano molto di più del seme.

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Mappe Multiple nella stessa app
« Risposta #2 il: 30 Settembre 2015, 12:58:41 CEST »
0
Ciao,
ho creato due fragment diversi con due layout diversi che contengono due mappe.

Layout 1 :
Codice (Java): [Seleziona]
?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/rl_stili"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent">
   
    <FrameLayout
         android:id="@+id/frame_appoggio"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent" >
   </FrameLayout>
       
            <it.reply.caRvour.library.SlidingUpPanelLayout
                            xmlns:sothree="http://schemas.android.com/apk/res-auto"
                            android:id="@+id/sliding_up_layout"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:gravity="bottom"
                            android:layout_above="@+id/button1"
                            android:background="#80000000"
                            sothree:umanoPanelHeight="0dp"
                            sothree:umanoShadowHeight="4dp">

                        <fragment
                                android:id="@+id/map"
                                android:name="com.google.android.gms.maps.MapFragment"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                tools:context=".MappaFragment"/>

                 
             <ScrollView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:gravity="center"
                 android:layout_marginTop="200dp"
                 android:id="@+id/scroll"  >
                 
                 <LinearLayout
                    android:id="@+id/top_view"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                                android:background="@color/blue_violet"
                    android:orientation="vertical"
                        >

                   </LinearLayout>
             </ScrollView>
           
        </it.reply.caRvour.library.SlidingUpPanelLayout>

              <Button
                        android:id="@+id/button1"      
                        android:layout_marginLeft="1sp"
                        android:layout_marginRight="1sp"
                        android:layout_marginBottom="1sp"
                        android:layout_alignParentBottom="true"
                            android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                        android:background="@color/grigio"
                android:textColor="@color/bianco"
                android:textAppearance="?android:attr/textAppearanceLarge"
                        android:text="@string/open_viaggi"
                />
   
</RelativeLayout>

Layout 2 :
Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/relativelayout_batteria"
        android:layout_width="match_parent"
        android:layout_height="match_parent">


           <FrameLayout
                    android:id="@+id/modRicaricaFrame"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                   android:background="@drawable/sfondo_bottone"

                  >
       
                           <TextView
                               android:id="@+id/mod_ricarica"
                               android:layout_width="wrap_content"
                               android:layout_height="wrap_content"
                               android:gravity="center_vertical|center_horizontal"     
                               android:layout_gravity="center_vertical|center_horizontal"      
                               android:text="@string/txt_modalita_ricarica"
                               android:textStyle="bold"
                               android:textColor="@color/bianco"
                               android:shadowColor="@color/black"
                           android:shadowDx="3"
                           android:shadowDy="3"
                           android:shadowRadius="3"
                               android:textAppearance="?android:attr/textAppearanceMedium" />
             
            </FrameLayout>
           
           <!--  stima dei km percorribili -->
               <FrameLayout
                    android:id="@+id/kmPercorribiliFrame"
                    android:layout_toRightOf="@+id/modRicaricaFrame"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                           android:background="@drawable/sfondo_bottone"

                    >
       
                           <TextView
                               android:id="@+id/vitaResidura"
                               android:layout_width="wrap_content"
                               android:layout_height="wrap_content"
                               android:gravity="center_vertical|center_horizontal"
                               android:layout_gravity="center_vertical|center_horizontal"      
                               android:text="@string/txt_vita_residua"
                               android:textStyle="bold"
                               android:textColor="@color/bianco"
                               android:shadowColor="@color/black"
                       android:shadowDx="3"
                       android:shadowDy="3"
                       android:shadowRadius="3"
                               android:textAppearance="?android:attr/textAppearanceMedium" />
             
            </FrameLayout>


     
    <it.reply.caRvour.library.SlidingUpPanelLayout
        xmlns:sothree="http://schemas.android.com/apk/res-auto"
        android:id="@+id/sliding_up_layout_colonnine"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="bottom"
        android:layout_above="@+id/listColonnine"
        android:layout_below="@+id/modRicaricaFrame"
        android:background="#80000000"
        sothree:umanoPanelHeight="0dp"
        sothree:umanoShadowHeight="4dp">

                <!-- per la mappa -->
                  <fragment
                                        android:id="@+id/map_colonnine"
                                        android:name="com.google.android.gms.maps.MapFragment"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        tools:context=".BatteriaFragment"
                                />
                <!-- per la list view scorrevole -->

                         <ScrollView
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_marginTop="200dp"
                                 android:id="@+id/scroll">

                                 <LinearLayout
                                        android:id="@+id/top_view_colonnine"
                                        android:layout_width="match_parent"
                                        android:layout_height="match_parent"
                                         android:background="@color/blue_violet"
                                        android:layout_marginLeft="1sp"
                                        android:layout_marginRight="1sp"
                                        android:orientation="vertical">
                                   </LinearLayout>

                         </ScrollView>
           
        </it.reply.caRvour.library.SlidingUpPanelLayout>

              <Button
                        android:id="@+id/listColonnine"
                        android:layout_marginLeft="1sp"
                        android:layout_marginRight="1sp"
                        android:layout_marginBottom="1sp"
                        android:layout_alignParentBottom="true"
                            android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                        android:background="@color/grigio"
                android:textColor="@color/bianco"
                android:textAppearance="?android:attr/textAppearanceMedium"
                        android:text="Colonnine Vicine"
                />      

</RelativeLayout>

per richiamare le mappe in entrambi i casi ho implementato queste righe di codice:
Codice (Java): [Seleziona]
    MapFragment fm = (MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.map);
 if (map != null) {
ArrayList<LatLng> latlng = new ArrayList<LatLng>();
        map.clear();

        for (int i = 0; i < SingletonClass.getLat().size(); i++)
            latlng.add(new LatLng(Double.valueOf(SingletonClass.getLat().get(i)), Double.valueOf(SingletonClass.getLng().get(i))));


        map.moveCamera(CameraUpdateFactory.newLatLngZoom(latlng.get(0), 13.0f));

        //Marker Inizio
        map.addMarker(new MarkerOptions()
                .position(latlng.get(0))
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
                .title("Inizio"));

        map.addMarker(new MarkerOptions()
                .position(latlng.get(latlng.size() - 1))
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
                .title("Fine"));

        for (int i = 1; i < SingletonClass.getType().size() - 1; i++) {

            if (SingletonClass.getType().get(i).equals(getResources().getString(R.string.frenata)))
                map.addMarker(new MarkerOptions()
                        .position(latlng.get(i))
//                                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_blu))
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))
                        .title(getResources().getString(R.string.frenata)));

            else if (SingletonClass.getType().get(i).equals(getResources().getString(R.string.accelerata)))
                map.addMarker(new MarkerOptions()
                        .position(latlng.get(i))
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA))
                        .title(getResources().getString(R.string.accelerata)));
            else if (SingletonClass.getType().get(i).equals(getResources().getString(R.string.curva)))
                map.addMarker(new MarkerOptions()
                        .position(latlng.get(i))
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE))
                        .title(getResources().getString(R.string.curva)));
            else if (SingletonClass.getType().get(i).equals(getResources().getString(R.string.inversione)))
                map.addMarker(new MarkerOptions()
                        .position(latlng.get(i))
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET))
                        .title(getResources().getString(R.string.inversione)));


        }

        ArrayList<LatLng> way = new ArrayList<LatLng>();
        for (int i = 1; i < latlng.size() - 1; i++)
            way.add(latlng.get(i));


        DownloadTask downloadTask = new DownloadTask();
        // Start downloading json data from Google Directions API
        downloadTask.execute(getDirectionsUrl(latlng.get(0), latlng.get(latlng.size() - 1), way));

}

Post unito: 30 Settembre 2015, 14:47:54 CEST
Su alcuni forum dicono che dovrei aggiungere nel manifest queste righe :
Codice (Java): [Seleziona]
<activity android:name=".activity.directory.MapView1" android:process=":MapView1">

<activity android:name=".activity.directory.MapView2" android:process=":MapView2">

il problema è che nella mia applicazione come "activity" c'è solo il main, il resto delle "class" sono Fragment, in particolare le classi delle due mappe sono Fragment quindi non saperei come specificare queste info nel manifest :(
« Ultima modifica: 30 Settembre 2015, 14:47:54 CEST da Raffyna, Reason: Merged DoublePost »

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Mappe Multiple nella stessa app
« Risposta #3 il: 01 Ottobre 2015, 09:38:08 CEST »
0
Ciao, non ho capito dove hai il problema. I due Fragment sono visibili contemporaneamente? Magari hai solo un problema di spazio sullo schermo.
I numeri contano molto di più del seme.

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Mappe Multiple nella stessa app
« Risposta #4 il: 01 Ottobre 2015, 09:44:56 CEST »
0
Ciao ,
I due frangent non sono visibili contemporaneamente. Il problema è che quando passo da un fragment  all'altro si verifica un problema di  sovrapposizione delle due mappe :(


Inviato dal mio GT-N7100 utilizzando Tapatalk


Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Mappe Multiple nella stessa app
« Risposta #5 il: 01 Ottobre 2015, 13:12:54 CEST »
0
Come passi da un fragment all'altro?
I numeri contano molto di più del seme.

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Mappe Multiple nella stessa app
« Risposta #6 il: 01 Ottobre 2015, 13:24:10 CEST »
0
Con questa istruzione :
Codice (Java): [Seleziona]
fragmentManager.beginTransaction().show(fragment).commit();
e Prima di chiamare la show faccio la hide di tutti glialtri fragment :
Codice (Java): [Seleziona]
fragmentManager.beginTransaction().hide(fragments.get(i)).commit();

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Mappe Multiple nella stessa app
« Risposta #7 il: 01 Ottobre 2015, 15:23:17 CEST »
0
Io di solito uso:

fragmentManager.beginTransaction().replace(R.id.container, fragment).commit();

Dove container è un layout.
I numeri contano molto di più del seme.

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Mappe Multiple nella stessa app
« Risposta #8 il: 01 Ottobre 2015, 15:24:58 CEST »
0
Corretto ma in questo caso sto gestendo un servizio sotto l'applicazione è con replace  è  come se si bloccasse  quando passo da un fragment  ad un altro :(

Inviato dal mio GT-N7100 utilizzando Tapatalk