卫星地图视图不显示在片段中

时间:2015-05-18 09:53:20

标签: android

@EFragment(R.layout.main_map)
public class MapActivity extends Fragment {
      private GoogleMap map;
      static final LatLng DURG = new LatLng(21.1900,81.2800);

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.main_map, container, false);
        map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        return view;
    }

}
  

在map.setMapType(GoogleMap.MAP_TYPE_SATELLITE)中出现空指针异常错误。

R.layout.main_map:

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

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

2 个答案:

答案 0 :(得分:1)

当你想要在片段内膨胀MapFragment时,你需要动态添加MapFragment。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.main_map, container, false);
    SupportMapFragmentmf = SupportMapFragment.newInstance();
    FragmentManager fm = getChildFragmentManager();
    fm.beginTransaction().replace(R.id.mapView, mf, "normal_map").commit();
    mf.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(GoogleMap arg0) {
            map = arg0;
            map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        }
    });
    return view;
}

你的main_map应该如下所示

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

我希望有所帮助。如果您有任何疑问,请告诉我。

答案 1 :(得分:0)

你应该使用

getMapAsync(OnMapReadyCallback callback)

然后在回调中,您可以将地图设置为卫星视图