2016-07-01 5 views
0

CustomMapFragmentマーカーは(ない正確な位置が表示されている)動作していない、唯一の世界地図がFrgamentに見える

public class CustomMapFragment extends SupportMapFragment { 

public static final LatLng NurissLife = new LatLng(28.602012, 77.098750); 
private SupportMapFragment supportMapFragment; 

@Override 
public void onActivityCreated(Bundle bundle) { 
    // FragmentManager fm=getChildFragmentManager(); 
    supportMapFragment=SupportMapFragment.newInstance(); 
    //supportMapFragment=(SupportMapFragment)getChildFragmentManager 
    //().findFragmentById(R.id.map_container); 
    supportMapFragment.getMapAsync(new OnMapReadyCallback() { 
     @Override 
     public void onMapReady(GoogleMap googleMap) { 
      googleMap.addMarker(new MarkerOptions().position 
     (NurissLife).title("Nuriss LifeCare")); 
      googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom 
     (NurissLife, 15)); 
      googleMap.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, 
      null); 
     } 
    }); 
    super.onActivityCreated(bundle); 

} 
} 

フラグメントXML

<FrameLayout 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" 
android:id="@+id/map_content" 
tools:context="com.demo.stuartabhi.nurisslife.Fragment.ContactFragment"> 

<!-- TODO: Update blank fragment layout --> 

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

</FrameLayout> 

</FrameLayout>' 

マーカーが動作していない(正確な場所が表示されていません)、世界地図 のみがフラッグメント

に表示されます

OnMapReadyが動作していない OnMapReadyメソッドで記述されているログにエラーはありません。

LatLng NurissLife inside SupportMapFragmentに記載されている場所にアクセスする方法については、ご相談ください。

ありがとうございます。

+1

私はあなたがあなたのアプリで、あなたに見えるものとは別のインスタンスをであるためにマーカーを追加している 'MapFragment'と思います。 XMLレイアウトで追加した 'MapFragment'の参照を使う必要があります。 – SlashG

+0

public class ContactFragment extendsフラグメント{ プライベートCustomMapFragment mapFragment; プライベートFragmentTransactionトランザクション。 GoogleMap mGoogleMap; @Override publicビューonCreateView(LayoutInflaterインフレータ、ViewGroupコンテナ、 バンドルsavedInstanceState){ View rootView = inflater.inflate(R.layout.fragment_contact、container、false); mapFragment = new CustomMapFragment(); トランザクション= getChildFragmentManager()。beginTransaction(); transaction.add(R.id.map_container、mapFragment).commit(); return rootView;} –

+0

まだ解決策が見つかりませんでした。ネストされたフラグメントを使用しました。ContactFragment extends Fragment、CustomMapFragment extends SupportMApFragment –

答えて

0

これを試してみてください:

は、このようなあなたのActivityクラスのメソッドgetCustomMapFragment()を作成します。

private SupportMapFragment getCustomMapFragment(){ 
    SupportMapFragment supportMapFragment; 
    supportMapFragment= SupportMapFragment.newInstance(); 
    supportMapFragment.getMapAsync(new OnMapReadyCallback() { 
     @Override 
     public void onMapReady(GoogleMap googleMap) { 
      googleMap.addMarker(new MarkerOptions().position 
        (NurissLife).title("Nuriss LifeCare")); 
      googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom 
        (NurissLife, 15)); 
      googleMap.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, 
        null); 
     } 
    }); 
    return supportMapFragment; 
} 

そして、あなたはあなたのFragmentTransactionを実行すると、この試してみてください。これで、また

... 
transaction=getChildFragmentManager().beginTransaction(); 
transaction.add(R.id.map_container,getCustomMapFragment()).commit(); 
... 

を実装では、XMLのclass="com.google.android.gms.maps.SupportMapFragment"行が不要な場合があります。

+0

まだ動作しません。 –

+0

'class =" com.google.android.gms.maps.SupportMapFragment "'行を削除しましたか? また、 'transaction.add()'の代わりに 'transaction.replace()'を試してください。 – SlashG

1

SupportMapFragmentを拡張すると、xmlレイアウトを拡張する必要はありません。ただ、Googleマップへの参照を取得するためにthis.getMapAsync()を呼び出す:

public class CustomMapFragment extends SupportMapFragment implements 
     OnMapReadyCallback { 

    private GoogleMap mMap; 

    public CustomMapFragment() { 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     setUpMapIfNeeded(); 
    } 

    private void setUpMapIfNeeded() { 
     if (mMap == null) { 
      getMapAsync(this); 
     } 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     Log.d("MyMap", "onMapReady"); 
     mMap = googleMap; 
     mMap.addMarker(new MarkerOptions().position(NurissLife).title("Nuriss LifeCare")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(NurissLife, 15)); 
     mMap.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null); 
    } 
} 
+0

それは動作します、@ダニエル大助けてくれてありがとう、私はそれを解決するために2時間以上立ち往生してきました。どうもありがとう。 –

関連する問題