How do I save a Google Maps map for offline use?

3

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));


}
    
asked by anonymous 13.11.2016 / 00:43

0 answers