У меня есть GoogleMap в SupportMapFragment. Он отлично работает на начальном дисплее. Камера перемещается, и добавляется круг. Но moveCamera и addCircle перестают работать после возвращения из своей дочерней активности.GoogleMap.moveCamera не работает после возвращения из дочерней активности
@Override
public void onConnected(Bundle arg0) {
Log.d("Main Activity",
"onConnected called");
mMap.setOnMarkerClickListener(this);
mMap.setOnCameraChangeListener(this);
mMap.setOnMyLocationChangeListener(this);
// Display the connection status
Location loc = mLocationClient.getLastLocation();
mGeolocation = new LatLng(loc.getLatitude(),loc.getLongitude());
Log.d("GeoLocation",
"latitue:"+mGeolocation.latitude+" longitude:" + mGeolocation.longitude);
if(mMap.getMyLocation()==null)
Log.d("GeoLocation",
"mMap location not set yet");
else
Log.d("GeoLocation",
"mMap location-----latitue:"+ mMap.getMyLocation().getLatitude()+" longitude:" + mMap.getMyLocation().getLongitude());
CameraPosition targetPosition = new CameraPosition.Builder().target(mGeolocation)
.zoom(12.0f)
.bearing(0)
.tilt(25)
.build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(targetPosition));
CircleOptions circleParam = new CircleOptions()
.center(mGeolocation)
.radius(MAX_DISTANCE)
.strokeColor(Color.BLUE)
.strokeWidth(5)
.visible(true);
mMap.addCircle(circleParam);
}
@Override
public boolean onMarkerClick(Marker marker) {
Vendor v = listedVendors.get(marker.getId());
if(v!=null){
Intent intent = new Intent(this, MenuActivity.class);
intent.putExtra(EXTRA_VENDOR, v);
intent.putExtra(EXTRA_GEO, mGeolocation);
intent.putExtra(EXTRA_CURRENTADDRESS, mCurrentAddress);
startActivity(intent);
}
return false;
}
@Override
public void onPause() {
Log.d("Main Activity",
"OnPause called");
super.onPause();
if (mLocationClient != null) {
mLocationClient.disconnect();
}`
}
Событие onCameraChange также не называется.
Заранее благодарим за любую помощь.
В каком методе вы пытаетесь подключиться к GoogleApiClient? Я предполагаю, что GoogleMap будет снова создан при возврате к первоначальной активности, поэтому экземпляр, который вы настроили, отличается от того, который отображается при возврате –
Вы видите журнал onConnected called ?, когда вы возвращаетесь к активность карты? Возможно, API все еще подключен и не нуждается в повторном подключении. Можете ли вы показать код, в котором вы запускаете дочернюю операцию? –
Он был вызван в onResume, откуда я называю метод connect LocationClient. LocationClient был отключен в onPause. метод подключения инициирует обратный вызов onConnected при подключении службы определения местоположения. –