5

Ich beobachte unerwartetes Verhalten von Google Map. Problem ist Map erhalten Ernte von oberen und unteren Bereich mit Support Map Fragment, Wenn ich im Vollbildmodus, Karte ist vollständig sichtbar, wie in Bild 1 gezeigt, aber wenn ich Kartenfragment Höhe oder Gewicht Eigenschaft anwenden, Karte ist nicht vollständig sichtbar, wie in Abbildung 2 gezeigtAndroid GoogleMap v2 wird abgeschnitten oder nicht vollständig angezeigt

Layout XML für Bild 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" /> 

XML-Layout für Bild 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" /> 

Java-Code:

@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); 
} 

In Bild 2, ich bin nicht in der Lage (User werden) arktischen Ozean über Grönland Bereich zu sehen, ähnlich Bodenfläche Region fehlen wird, wie in Bild 3 enter image description here gezeigt.

Ist jemand mit diesem Problem konfrontiert oder weiß jemand, wie man damit zurechtkommt?

Jeder Verweis Verweis oder Hinweis wird freundlich geschätzt.

Picture 1, Picture 2.

+0

posten Sie Ihre XML. Code, wo Sie die Höhe und Breite festgelegt haben. –

+0

@SagarNayak Frage bearbeitet. –

+0

Wie Sie Gewicht auf 0,6 geben, dann wird das lineare Layout nur 60% Platz zum Map-Fragment geben. Sag mir, warum gibst du Gewicht? und was genau willst du? –

Antwort

2

Verwenden Sie dieses Snippet. Ich habe bekommen, was Sie gesagt haben, indem Sie das Kartenfragment innerhalb des linearen/relativen Layouts nehmen, die Karte wird von oben und unten abgeschnitten und einige Teile sind nicht sichtbar. Da Sie wollen, dass die Karte 60% des Bildschirms einnimmt, ist eine mögliche Lösung, nehmen Sie das Kartenfragment in FrameLayout mit der Höhe als match_parent.

Nun nehmen Sie die Textview innerhalb Linearlayout mit Eltern als FrameLayout und legen Sie die Schwerkraft Boden zu sein, und legen Sie seine Höhe dynamisch 40% des Bildschirms (oder wie viel Ihre Anforderung ist) durch die DisplayMetrics Klasse. Auf diese Weise stellen wir sicher, dass der gesamte Bildschirm der Karte zur Verfügung gestellt wird, so dass kein Teil abgeschnitten wird und der Text auch über der Karte angezeigt wird. Ich füge auch den aktualisierten Screenshot an.

<?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> 

Der Java-Code in Ihre onCreate für DisplayMetrics:

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

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

Screenshot updated image with full map on top

Ich denke, das wird helfen.

+0

haben Sie das Bild 3 gesehen, der obige Bereich wird nicht angezeigt mit Scrollen/Ziehen der Karte. –

+0

Bro Ich versuchte es und seine Arbeit mit dem Ziehen der Karte. Ich befestige den Schnappschuss wie in meinem Gerät passiert. Siehe das obige Snippet. Oder verwenden Sie googleMap.getUiSettings(). SetScrollGesturesEnabled (true); in Ihrer OnMapReady() -Funktion, wenn Sie nicht blättern können. – Mrigank

+0

Scrolling ist funktioniert, ich kann blättern, können Sie einen anderen Screenshot erfassen, der die Region zeigt, wie ich in Bild 1 und Bild 3 geschrieben habe. Scrollen nach oben, und lassen Sie mich sehen –