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;
}
}
这是我的主要 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;
}
}