1

私は、stackoverflow上のフラグメント内のマップに関する多くの質問があることを知っていますが、それらのすべてが古く、私のために働いていない..だから私は内部にGoogleマップを実装しようとしている断片は、地図が表示されますが、私はsetMyLocationEnabler(true)を使用し、またはマーカー、または何かを追加することはできません...ここに私のコードは次のとおりです。フラグメント内のGoogleのgoogle maps

public class MapFragment extends Fragment { 

private SupportMapFragment mSupportMapFragment; 

public MapFragment() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    mSupportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.location_map); 
    if (mSupportMapFragment == null) { 
     FragmentManager fragmentManager = getChildFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     mSupportMapFragment = SupportMapFragment.newInstance(); 
     fragmentTransaction.replace(R.id.location_map, mSupportMapFragment).commit(); 
    } 
    if (mSupportMapFragment != null) { 
     mSupportMapFragment.getMapAsync(new OnMapReadyCallback() { 
      @Override 
      public void onMapReady(GoogleMap googleMap) { 
       if (googleMap != null) { 
        googleMap.getUiSettings().setAllGesturesEnabled(true); 
        if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
         return; 
        } 
        googleMap.setMyLocationEnabled(true); 
        LatLng sydney = new LatLng(-34, 151); 
        googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
        googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
       } 
      } 
     }); 
    } 

    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_map, container, false); 
} 

} 

マイAPIキーが正しくマニフェストファイルに追加されます。

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

<application 

    <meta-data android:name="com.google.android.geo.API_KEY" android:value="-----------------------------------"/> 

</application> 

フラグメントのレイアウトは次のとおりです。

私はGoogleがbuild.gradleでのサービスの依存関係を果たしてい
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="mk.com.urban.urbanrider.MapFragment"> 

<!-- TODO: Update blank fragment layout --> 
<FrameLayout 
    android:id="@+id/location_map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.SupportMapFragment" /> 

</RelativeLayout> 

:私は本当に次に何をすべきか見当がつかない

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
testCompile 'junit:junit:4.12' 
compile project(':volley') 
compile 'com.android.support:appcompat-v7:23.4.0' 
compile 'com.android.support:design:23.4.0' 
compile 'com.android.support:support-v4:23.4.0' 
compile 'com.google.android.gms:play-services:8.4.0' 
} 

を、私はすべてを試してみた...

+0

あなたは2時間後に私はそれを得た[リンク](http://stackoverflow.com/a/35460657/1332549)、フラグメントのG地図を使用するために探していた、あなたの検索を確認する必要があります。それがあなたを助けたら、私に言った、私は答えにリンクを追加します:) – MiguelHincapieC

答えて

0

私はしましたちょうど試してみましたが、私はカスタムフラグメントの中でマップを使用するのに何の問題も見ません。

カスタム断片と

Activityクラス:

public class DemoActivity extends AppCompatActivity { 
    public static class WrapFragment extends Fragment { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
     } 

     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
      View view = inflater.inflate(R.layout.wrap_demo_fragment, container, false); 
      return view; 
     } 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.save_state_demo); 
     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.map_wrap, new WrapFragment(), "qwerty_tag") 
        .commit(); 
     } 
    } 
} 

活動のレイアウトsave_state_demo.xml:

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

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="1337" /> 

    <FrameLayout 
     android:id="@+id/map_wrap" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</LinearLayout> 

カスタムフラグメントレイアウトwrap_demo_fragment.xml:

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

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

</LinearLayout> 

あなたが必要とするすべてです。