package hu.supercluster.overpasser.app.activity.container; import android.location.Location; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.model.CameraPosition; import com.google.android.gms.maps.model.LatLng; import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EBean; import hu.supercluster.overpasser.app.util.LocationHelper; import hu.supercluster.overpasser.app.view.PoiInfoWindowAdapter; import static com.google.android.gms.maps.GoogleMap.MAP_TYPE_NORMAL; @EBean public class MapUiHandler { private MapFragment fragment; @Bean LocationHelper locationHelper; @Bean PoiInfoWindowAdapter poiInfoWindowAdapter; public void setFragment(MapFragment fragment) { this.fragment = fragment; } void setMapParams() { GoogleMap googleMap = fragment.getGoogleMap(); googleMap.setMapType(MAP_TYPE_NORMAL); googleMap.setMyLocationEnabled(true); googleMap.setInfoWindowAdapter(poiInfoWindowAdapter); googleMap.getUiSettings().setMapToolbarEnabled(false); googleMap.setOnCameraChangeListener(getOnCameraChangeListener()); resetMap(); } public void resetMap() { GoogleMap googleMap = fragment.getGoogleMap(); if (googleMap != null) { googleMap.clear(); } } public void moveMapToCurrentPosition() { moveMap(locationHelper.getLastKnownLocation()); } void moveMap(Location location) { if (location != null) { CameraUpdate cameraUpdate = getCameraUpdate(location); fragment.getGoogleMap().moveCamera(cameraUpdate); } } private CameraUpdate getCameraUpdate(Location location) { CameraPosition cameraPosition = new CameraPosition.Builder() .target(new LatLng(location.getLatitude(), location.getLongitude())) .zoom(fragment.zoomLevel) .build() ; return CameraUpdateFactory.newCameraPosition(cameraPosition); } private GoogleMap.OnCameraChangeListener getOnCameraChangeListener() { return new GoogleMap.OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition cameraPosition) { fragment.zoomLevel = cameraPosition.zoom; } }; } }