Android MapMap在暂停 - 恢复后停止响应

时间:2013-01-28 00:29:08

标签: android fragment google-maps-android-api-2

我正在开发一款用于跟踪GPS数据的应用程序,该应用程序在界面中显示了一个巨大的GoogleMap,显示正在跟踪的内容。事情按照我想要的方式运作,直到活动因任何原因暂停(电话,主页按钮等),然后我恢复活动。

初始启动后,地图不会对任何用户交互作出反应,这对我来说是有效的。任何将相机设置为某个位置动画的调用都会起作用,标记会被绘制,用户位置和方位也会被绘制。 在暂停 - 恢复循环之后,恰恰相反。地图采用来自用户的所有手势,但不会对任何呼叫做出反应。我无法为相机设置动画,绘制标记或显示用户位置。

我尝试了很多东西,试图在恢复时强制重新加载地图设置并暂停地忽略地图,但似乎没有任何效果。

这是我设置地图的地方,在onCreate中调用(并在onResume中尝试过):

private void setupMap(){
    getSupportFragmentManager().beginTransaction().replace(R.id.trackeractivity_map, new SupportMapFragment()).commit();
    FragmentManager fragmentManager = getSupportFragmentManager();
    SupportMapFragment supportMapFragment = (SupportMapFragment) fragmentManager.findFragmentById(R.id.trackeractivity_map);
    mMap = supportMapFragment.getMap();
    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    mMap.setMyLocationEnabled(true);
}

这是我更新用户位置和为相机设置动画的地方:

private void updateUserLocation(double lat, double lon){
    Log.d(TAG, "updateUserLocation - " + lat + " : " + lon);
    mLastLocationLat = lat;
    mLastLocationLon = lon;
    if (mMap != null){
        CameraPosition userPos = new CameraPosition(new LatLng(lat, lon), mMap.getMaxZoomLevel()-4, 0, 0);
        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(userPos));
    }
}

这就是我在赛道上添加新标记的地方:

private void updateMapOverlay(double lat, double lon){
    Log.d(TAG, "updateMapOverlay - " + lat + " : " + lon + " - Type " + mCurrentType);
    MarkerOptions marker = new MarkerOptions();
    marker.position(new LatLng(lat, lon));
    marker.draggable(false);
    marker.icon(BitmapDescriptorFactory.fromResource(getTypeDrawableID(mCurrentType)));
    mMap.addMarker(marker);
}

布局中的地图片段:

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

正如您所看到的,我正在使用supportfragmentmanager,并且该活动还使用了来自JFeinstein的SlidingMenu - 这非常有效。

有关让地图工作的任何帮助,即使在暂停 - 恢复后也是如此?

1 个答案:

答案 0 :(得分:1)

我看到了如何在setupMap方法中添加片段的一些可能问题。我建议重新阅读谷歌的指南,或查看以下帖子,特别是在答案中链接的博客文章,因为它有一个完整的工作类,可以跟踪用户的位置,并可以暂停/恢复正常工作。

https://stackoverflow.com/a/13753518/1103584