2

Моя проблема: я могу просто прокручивать вверх и вниз по моему MapView, а не влево и вправо.Android MapView только прокручивает по вертикали

У меня есть MapView в моем LinearLayout, который хранится в виде вложенного прокрутки. Так что мой layout.xml выглядит следующим образом:

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

    ... 

    <com.google.android.gms.maps.MapView 
     android:layout_width="match_parent" 
     android:layout_height="160dp" 
     android:layout_margin="10dp" 
     android:id="@+id/jd_map_view"/> 
    ... 
</LinearLayout> 

Я инициализация MapView в моем фрагменте, holded по TabLayout, как это:

mapView = (MapView) mRootView.findViewById(R.id.jd_map_view); 
mapView.onCreate(savedInst); 
mapView.onResume(); 
mapView.getMapAsync(new OnMapReadyCallback() { 
      @Override 
      public void onMapReady(GoogleMap googleMap) { 
       LatLng latlng = new LatLng(mLat, mLng); 
       googleMap.addMarker(new MarkerOptions().position(latlng)); 
       CameraUpdate center= CameraUpdateFactory.newLatLng(latlng); 
       CameraUpdate zoom=CameraUpdateFactory.zoomTo(14); 

       googleMap.moveCamera(center); 
       googleMap.animateCamera(zoom); 
      } 
     }); 

Он работает более или менее правильно, означает, что я вижу карту, вижу, что мой маркер и карта находятся на правильной позиции. Но, к счастью, я не могу прокрутить вправо ...

+1

Я никогда не ставил карту в гнездовой зрения прокрутки. Если вы используете фрейм-макет для своих фрагментов и добавляете mapfragment к нему, он должен работать –

+0

Где вы хотите использовать макет фрейма? вместо линейного макета или в качестве заполнителя для MapFragment? – Steeve

+0

как владелец места –

ответ

0

Не будет ли это работать для вас?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <fragment 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.MapFragment" /> 

</RelativeLayout> 
+0

К сожалению, нет:/ – Steeve

0

Вместо того чтобы использовать макет прокрутки, карта будет автоматически прокручивать в любом направлении, если поместить его в простой framelayout.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/main" 
      android:layout_height="match_parent" 
      android:layout_width="match_parent" 
      android:paddingBottom="@dimen/activity_vertical_margin" 
      android:paddingLeft="@dimen/activity_horizontal_margin" 
      android:paddingRight="@dimen/activity_horizontal_margin" 
      android:paddingTop="@dimen/activity_vertical_margin" 
      tools:context="thiscode.databasedemo.Main"> 

    <TextView 
     android:id="@+id/tv" 
     // adjust margins for your need. 
     android:layout_marginTop="30dp" 
     // etc 


    <FrameLayout 
     android:id="@+id/fl" 
     android:layout_below="@+id/tv" 
     android:layout_height="fill_parent" 
     // adjust margins for your need. 
     android:layout_marginBottom="0dp" 
     android:layout_marginLeft="0dp" 
     android:layout_marginRight="0dp" 
     android:layout_marginTop="40dp" 
     android:layout_width="match_parent"> 

     <fragment 
      android:id="@+id/map" 
      android:layout_height="fill_parent" 
      android:layout_width="match_parent" 
      android:name="com.google.android.gms.maps.MapFragment"/> 
    </FrameLayout> 
</RelativeLayout> 

Активность:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.act_main); 
    // create class object 
    fragmentManager = getFragmentManager(); 
    // 
    try { 
     GoogleMap googleMap = 
       ((MapFragment) fragmentManager.findFragmentById(R.id.map)) 
         .getMap(); 
     // example data. 
     googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     LatLng latlng = new LatLng(0.083037, 106.704897); 
     CameraPosition cameraPosition = 
       new CameraPosition.Builder().target(latlng).zoom(2).build(); 
     googleMap.animateCamera(
       CameraUpdateFactory.newCameraPosition(cameraPosition)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

Хорошо, я должен ложиться спать, я надеюсь, что это разобрано, это работает это из функционального кода. Поэтому играйте с ним и не меняйте дизайн макета, чтобы его проверить. Оставьте комментарий, если вам нужно, но я не вернусь на некоторое время. –

+0

Спасибо, я попробую. Чтобы избежать недоразумений: мне нужен NestedScrollView, потому что Содержимое слишком велико, а не для Карты. Я хочу иметь обычный ScrollView с MapView в нем, который становится активным, если я прокручиваю его. – Steeve

+0

Далее: Я хочу показать карту в фрагменте, а не в действии. – Steeve

Смежные вопросы