5

J'observe un comportement inattendu de Google Map. Problème: La carte est recadrée en haut et en bas à l'aide du Fragment de mappage de support, si j'utilise le plein écran, la carte est complètement visible comme illustré dans l'image 1, mais si j'applique des propriétés de hauteur ou de poids de fragment de carte, visible comme indiqué dans l'image 2.Android GoogleMap v2 recadré ou pas entièrement affiché

layout xml pour l'image 1:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:map="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/map" 
android:name="com.google.android.gms.maps.SupportMapFragment" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.paki.venturedive.awtest.MapsActivity" /> 

layout xml pour l'image 2:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="0.6" 
    tools:context="com.paki.venturedive.awtest.MapsActivity" /> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Hello world" 
    android:layout_weight="0.4" /> 

code Java:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 

dans l'image 2, je suis (User sera) incapable de voir l'océan arctique au-dessus de la zone du Groenland, région de zone inférieure de la même sera absent, comme indiqué dans l'image 3 enter image description here.

Est-ce que quelqu'un a été confronté à ce problème ou est-ce que quelqu'un sait comment le gérer?

Tout lien ou indice de référence sera apprécié.

Picture 1, Picture 2.

+0

postez votre fichier XML. code où vous avez défini la hauteur et la largeur. –

+0

Question @SagarNayak éditée. –

+0

comme vous donnez son poids à 0,6 alors la disposition linéaire ne donnera que 60% d'espace pour cartographier le fragment. dites-moi pourquoi donnez-vous du poids. et qu'est-ce que tu veux exactement? –

Répondre

2

Utilisez cet extrait. J'ai obtenu ce que vous disiez, en prenant le fragment de la carte à l'intérieur de la disposition linéaire/relative, la carte est découpée en haut et en bas et certaines parties ne sont pas visibles. Puisque vous voulez que la carte prenne 60% de l'écran, une solution possible est de prendre le fragment de la carte à l'intérieur de FrameLayout avec height comme match_parent.

Maintenant, prenez le textview intérieur LinearLayout avec les parents comme FrameLayout et définir sa gravité pour être bas et régler sa hauteur dynamique 40% de l'écran (ou combien votre exigence est) en utilisant les DisplayMetrics classe. De cette façon, nous assurons que le plein écran est fourni à la carte de sorte qu'aucune partie ne soit coupée, et l'affichage du texte aussi au-dessus de la carte. Je joins la capture d'écran mise à jour également.

<?xml version="1.0" encoding="utf-8"?> 


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/map_framecontainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <fragment 
     android:id="@+id/fragment_map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 

     android:layout_height="match_parent" /> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:id="@+id/tv_main"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/fragment_map" 
     android:layout_gravity="center" 
     android:background="#ffffff" 
     android:text="Hello world" /> 

    </LinearLayout> 
</FrameLayout> 

Le code java dans votre onCreate pour DisplayMetrics:

DisplayMetrics metrics = new DisplayMetrics(); 
      getWindowManager().getDefaultDisplay().getMetrics(metrics); 

      mylinearlayout.setMinimumHeight((int)(metrics.heightPixels * 0.4)); 

Screenshot updated image with full map on top

Je pense que cela vous aidera.

+0

Avez-vous vu la photo 3, la zone ci-dessus n'est pas affichée en faisant défiler/en faisant glisser la carte. –

+0

Bro Je l'ai essayé et c'est en train de faire glisser la carte. Je vais attacher l'instantané comme se passe dans mon appareil. Voir l'extrait ci-dessus. Ou utilisez googleMap.getUiSettings(). SetScrollGesturesEnabled (true); dans votre fonction OnMapReady() si vous ne pouvez pas faire défiler. – Mrigank

+0

défilement est worknig, je peux défiler, pouvez-vous capturer une autre capture d'écran, qui montre la région, comme je l'ai posté dans l'image 1 et l'image 3. défilement vers le haut, et laissez-moi voir –