Android无法在片段中加载谷歌地图

时间:2014-07-27 14:45:19

标签: android google-maps

我正在尝试在片段中使用谷歌地图,但我遇到了一个我不明白的问题。

我没有到达这一行加载地图:

gMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

此行似乎总是返回null ...

我尝试使用SupportMapFragment的MapFragment,但这是不可能的。

如何解决?

为了解释为什么我想在一个片段中显示它,这是因为我使用的是导航器,我的一个项目需要显示地图。

THX,

编辑:我的xml:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:name="com.google.android.gms.maps.MapFragment"/>

3 个答案:

答案 0 :(得分:1)

我认为您应该使用getsupportFragmentManager而不是getFragmentManager,否则它将始终返回null

答案 1 :(得分:1)

如果您使用 SupportMapFragment ,则需要更改布局!

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:name="com.google.android.gms.maps.SupportMapFragment"/>

这是使用 SupportMapFragment

的基本示例
public class MainActivity extends ActionBarActivity implements OnMapReadyCallback{

    private SupportMapFragment map;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        
        map = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        map.getMapAsync(this);//remember getMap() is deprecated!      
    }

    @Override
    public void onMapReady(GoogleMap map) {
           map.moveCamera(CameraUpdateFactory.newLatLngZoom(
                    new LatLng(47.17, 27.5699), 16));      
            map.addMarker(new MarkerOptions()               .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)).anchor(0.0f, 1.0f) // Anchors the marker on the bottom left
                    .position(new LatLng(47.17, 27.5699))); //Iasi, Romania
            map.setMyLocationEnabled(true);     
    }
}

并更改布局中的引用:

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

答案 2 :(得分:0)

我不认为谷歌地图包含&lt;片断&gt;标签。请参阅here原因:

  

注意:当布局包含a时,您无法将布局扩展为片段。只有动态添加到片段时才支持嵌套片段。

然而,SO中的一些人设法在一个片段中显示地图,但解决方案很糟糕。