I'm making an application that uses the Maps API for Android. The problem is that it only displays the map if you are connected to the Internet.
How can I download the map of a certain region and leave it available in the application to run while the device is disconnected?
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(map);
mapFragment.getMapAsync(this);
//Versão do Android a partir do 6.0 precisa desse 'resquest' para permissões de GPS e Localização
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
checkLocationPermission();
// Tratamento de exceção, caso o serviço de localização nao esteja ativo chama a função
// que habilita o GPs e/ou localização
try {
checkGps();
} catch (Exception e) {
createNoGpsDialog();
}
}
//Versão do Android a partir do 6.0 precisa desse 'resquest' para permissões de GPS e Localização
//Mostra uma caixa de Dialogo para o usuario se ele permite ou não a ativação do GPS ou Localização
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case 1: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
}else{}
}
}
}
public boolean checkLocationPermission(){
String permission = "android.permission.ACCESS_FINE_LOCATION";
int res = this.checkCallingOrSelfPermission(permission);
return (res == PackageManager.PERMISSION_GRANTED);
}
//---------------------------------------------------------------
@Override
public void onMapReady(GoogleMap map) {
// Tipo do Mapa
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
//Minha Posição Atual
map.setMyLocationEnabled(true);
// Posicao inicial onde o mapa abre
map.moveCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(-27.3246787, -53.4387937), (float) 14.5));
}