java - MapFragment,GoogleMap .getMap()

标签 java android google-maps-android-api-2

在尝试创建 GoogleMap 对象(它返回 null)时,我在让 .getMap() 工作时遇到了很多麻烦,我环顾四周,发现人们也遇到了类似的问题,但无法从他们那里找到任何帮助。在当前的实现中,我如何找到 MapFragment 并从中创建 GoogleMap

protected void setFragment(){
    FragmentManager fm = getFragmentManager();
    MapFragment mapFragment =  MapFragment.newInstance();
    fm.beginTransaction().replace(R.id.fragment_container, mapFragment).commit();

    try{
        GoogleMap gMap = ((MapFragment)fm.findFragmentById(R.id.fragment_container)).getMap();
        gMap.setBuildingsEnabled(true);
    }catch(Exception e){  }

}

包含fragment_container的XML部分

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:id="@+id/selectionLayout">


    <RelativeLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="85dp">


    </RelativeLayout>

</RelativeLayout>

最佳答案

在开始使用之前允许加载Map,否则您将得到null。本地图可供使用时,您会收到 onReady 回调。

protected void setFragment(){
    FragmentManager fm = getFragmentManager();
    MapFragment mapFragment =  MapFragment.newInstance();
    fm.beginTransaction().replace(R.id.fragment_container, mapFragment).commit();

    try{
        mapFragment.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap map) {
                //your map related actions.
            }
        });
    }
    catch(Exception e) {
        e.printStackTrace();
    }
}

关于java - MapFragment,GoogleMap .getMap(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813278/

相关文章:

java - 重新绘制时绘制的形状浮华和跳跃?

java - 无法在Spring Cloud中调用Rest Endpoint

java - java无法解析textArea

java - 让Struts为不同的角色显示不同的JSP

android - 在主题中使用 fontFamily 属性时,Toast 使用 appcompat v26 引发 ArrayIndexOutOfBoundsException

android - 在 TranslateAnimation 期间在 EditText 之间切换文本

android - 显示 ListView 后,尝试以编程方式设置 LISTVIEW 内 SWITCH 的状态

android - 如何在 Android 中获取原始 map 标记图标?

android - 如何将动态数据传递给 android 中的自定义信息窗口适配器?

android - 如何在 fragment 中使用谷歌地图 V2?