0

编辑

我找到了更好的STR:

  1. 确保在“设置”的“开发者选项”中设置“不保留活动”。
  2. 使用 SupportMapFragment 作为另一个 Fragment 的子 Fragment 打开应用程序。
  3. 切换到另一个应用程序
  4. 再次打开您的应用
  5. 请注意,您无法与地图交互,也无法使用动画。
  6. 在应用程序中打开另一个屏幕
  7. 请注意,在屏幕上绘制了标记的地图只有一帧左右。

我对 Google Maps API v2 有疑问。

我正在为相机设置动画以缩放到在 MapFragment 上呈现的一组自定义标记位图。

在选择其中一个标记工具提示时,我会打开一个geo:意图(用于 Google 地图应用等)

当用户按下它时,它会重新打开我的活动,并重建片段返回堆栈。

我的问题是它不会在返回时呈现相机动画或标记,尽管当用户按下返回以转到上一个片段时会短暂显示这些标记。

GoogleMap 实例有标记,但它不渲染它们——我猜是因为 MapFragment/MapView 认为它不需要渲染。

如何强制渲染 MapView?如果做不到这一点,我如何让 MapView 识别模型已更改?

4

2 回答 2

0

将这些行放入恢复方法中-

 SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
  googleMap = fm.getMap();
  //display zoom map
     googleMap.moveCamera( CameraUpdateFactory.zoomTo(13.2f));
        // Enabling MyLocation Layer of Google Map
        googleMap.setMyLocationEnabled(true);

演示链接在这里

于 2013-07-17T05:30:47.480 回答
0

问题与我处理子片段的方式有关。

每次父片段调用onCreate子片段时都会重新创建。

我做了以下处理我的孩子片段,但可能有更好的方法:

private static final String TAG_FRAGMENT_MAP = "TagFragmentMap";

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...
    if (savedInstanceState == null) {
        // create the fragments for the first time
        ft.add(R.id.view_flip, new SupportMapFragment(), TAG_FRAGMENT_MAP);
        ft.commit();
    }
}

// ...

public void onViewStateRestored(Bundle savedInstanceState) {
    super.onViewStateRestored(savedInstanceState);
    mMapFragment = (SupportMapFragment)findFragmentByTag(TAG_FRAGMENT_MAP);
}
于 2013-07-22T04:50:09.343 回答