1

我用新的谷歌地图 api v2 试验了几个问题

我有一个包装了 mapFragment 的片段,它是在应用程序的请求下创建的。

在用户单击按钮时创建的另一个片段中,此内容是另一个 mapFragment。

但是这张地图显示的是第一个片段上显示的第一张地图。并且它被冻结并且无法对其进行操作......

我读过一些用户在显示多图时遇到问题。知道如何解决这个问题吗?

这就是我创建地图的方式:

mMapFragment = (SupportMapFragment) this.getActivity().getSupportFragmentManager()
            .findFragmentByTag(MAP_FRAGMENT_TAG);

    // We only create a fragment if it doesn't already exist.
    if (mMapFragment == null) {
        // To programmatically add the map, we first create a
        // SupportMapFragment.
        mMapFragment = SupportMapFragment.newInstance();
        mMapFragment.setRetainInstance(false);
        // Then we add it using a FragmentTransaction.
        FragmentTransaction fragmentTransaction = this.getActivity().getSupportFragmentManager()
                .beginTransaction();
        fragmentTransaction.add(R.id.ly_map, mMapFragment,MAP_FRAGMENT_TAG);
        fragmentTransaction.commit();
    } else {
        dbug.log("Restoring map");
        mMapFragment.setRetainInstance(false);
        mMap = mMapFragment.getMap();
    }

    // We can't be guaranteed that the map is available because Google Play
    // services might
    // not be available.
    setUpMapIfNeeded();
4

1 回答 1

3

没有人回答,所以我终于靠自己成功了。

所以我会分享给其他有同样问题的人。它接缝存在一个错误,如果您有多个片段并且您尝试实例化两个或更多地图(Google Maps)接缝以获取先前保存的相同实例,即使您使用 SupportMapFragment.newInstance()

无论如何,你应该做的是在打开新地图之前关闭地图,所以如果你想显示第二张地图,首先要删除前一张地图的片段。然后实例化一个新的并添加到对应的布局中。

这不是一个非常好的解决方案,因为它意味着每次都打开和关闭地图,但这是我能找到的最好的解决方案。

于 2013-05-07T07:00:02.433 回答