2016-12-04 1 views
0

Androidスタジオを使用してアプリケーションを作成しています。地図が表示されていてもマーカーを追加できませんOnMapReadyから取得したGoogleMapオブジェクトを使用して他の操作を行うこともできます。MapFragmentは表示されていますが、Googleマップでマーカーを追加したり、カメラなどを移動することはできません

ここに私の主な活動からのコードです:

public class MapFragment extends SupportMapFragment { 

    public MapFragment() {} 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     super.onCreateView(inflater, container, savedInstanceState); 
     return inflater.inflate(R.layout.fragment_map, container, false); 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
    } 
} 

とXMLレイアウト:

public class MainActivity extends AppCompatActivity implements OnFragmentInteractionListener, OnMapReadyCallback { 
    MapFragment mapFragment; 
    private GoogleMap mMap; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     switchFragments(GlobalConsts.FRAGMENT.MAP); 
    } 
    public void switchFragments(GlobalConsts.FRAGMENT fragment){ 
     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
     switch (fragment) { 
      case MAP: 
       if (mapFragment == null) { 
        mapFragment = new MapFragment(); 
       } 
       mapFragment.getMapAsync(this); 
       transaction.replace(R.id.fragmentContainer, mapFragment); 
       transaction.addToBackStack(null); 
       break; 
     } 
     transaction.commit(); 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     LatLng sydney = new LatLng(-34, 151); 
     mMap.addMarker(new MarkerOptions() 
       .position(sydney) 
       .title("Sydney") 
       .snippet("Population: 4,627,300") 
       .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))); 

     CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build(); 
     mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 
    } 
} 

ここでは私の主な活動

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 

    android:id="@+id/activity_main" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    tools:context="jarett.familymap.MainActivity"> 

    <FrameLayout 
     android:id="@+id/fragmentContainer" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     /> 

</LinearLayout> 

マイMapFragmentクラスのXMLレイアウトだが、私のMapFragment in fragment_map.xml:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/mapFragment" 
      android:orientation="vertical" 
      android:layout_width="match_parent" android:layout_height="match_parent" 
      class="com.google.android.gms.maps.SupportMapFragment" 
      tools:context="jarett.familymap.MapFragment"> 

</fragment> 

私が言ったように、地図の断片を表示する限りすべてが正常に動作しているように見えますが、私の人生にとっては、マーカーをズームして追加するコードが何もしていないのは分かりません。私は助けに感謝します。

答えて

1

マーカーをズームして追加するためのコードはまあ、あなたは二つのマップを持って何でも

をやっていない理由を私は理解することはできません。 MapFragmentSupportMapFragmentに拡張されているので、1つの地図が表示されます。次に、MapFragmentはレイアウトを展開し、順番にSupportMapFragmentを作成します。 2つのマップがあります。

次のいずれかの

  • は、それに関連付けられたレイアウトファイルと一緒に、完全にMapFragmentを削除し、ちょうどあなたの活動を持っているがMapFragmentからあなたonCreateView()方法を削除SupportMapFragment、または

  • を作成し、マップを移動します - 管理コードMapFragmentgetMapAsync()の呼び出しで呼び出されますonViewCreated()でコールします(私はあなたが既存のコードであまりにも早くそれを呼び出すことを心配しています)

+0

うわー、ありがとう!私はちょうどonCreateView()を削除して、それが想定されているとおりに正確に動作しています。私を助けてくれてありがとう、私はここで私の心を失っていた。 –

+0

この解決策が問題を解決した場合は、受け入れられた回答としてマークすることを検討してください – antonio

関連する問題