Google 地图在恢复时没有动画到当前位置

Google Map is not animating to current location on resuming

这是我的主要 activity,在这里它工作正常,但是如果我们再次加载地图后返回一次,它不会像第一次那样显示当前位置(即当 onCreate() 被调用。) GPSTracker 文件正在实现 LocationListner 接口并为我提供我传递给 goToLocation(lat, lng)

的当前位置

  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.before_login_map_activity);
      progressView = (View) findViewById(R.id.progress_bar);
      if (initMap()) {
        gpsTracker = new GPSTracker(this);
        if (gpsTracker.canGetLoaction()) {
          originlon = gpsTracker.getLongitide();
          originlat = gpsTracker.getLattitude();
          mMap.setMyLocationEnabled(true);
          mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
          goToLocatoin(originlat, originlon);
        }
        getJsonLatLon();
      } else {
        Toast.makeText(BeforeLoginMapActivity.this, "Map Not Available!", Toast.LENGTH_SHORT).show();
      }
<fragment android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" tools:ignore="MissingPrefix" android:layout_width="match_parent" android:layout_height="match_parent" />

1)声明一个私有的CameraPosition变量 2)然后覆盖 onPause() 并从 GoogleMap 实例 getCameraPosition 3) 再次覆盖 onResume() 到 GoogleMap instace provide CameraPosition

//Globally declare CameraPosition
private CameraPosition cp;


@Override
protected void onPause() {
  super.onPause();
  cp = mMap.getCameraPosition();
  mMap = null;
}

@Override
protected void onResume() {
  super.onResume();
  if (cp != null) {
    mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cp));
    cp = null;
  }
}