3
respostas

Erro ao localizar endereço

Fiz exatamente o que pede o video, porém estou com um problema no método pegaCoordenadaDoEndereco(), está lançando IOException sempre. O erro começa no getFromLocationName(). Segue meu código com o erro...

public class MapaFragment extends SupportMapFragment implements OnMapReadyCallback {

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);


        getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {


        LatLng posicaoDaEscola = pegaCoordenadaDoEndereco("Rua Vergueiro 3185, Vila Mariana, Sao Paulo");

        if(posicaoDaEscola != null){

            CameraUpdate update = CameraUpdateFactory.newLatLngZoom(posicaoDaEscola, 17);

            googleMap.moveCamera(update);
        }

//        AlunoDAO alunoDAO = new AlunoDAO(getContext());
//
//        for(Aluno aluno : alunoDAO.buscaAlunos()){
//
//            LatLng coordenada = pegaCoordenadaDoEndereco(aluno.getEndereco());
//            if (coordenada != null){
//
//                MarkerOptions marcador = new MarkerOptions();
//                marcador.position(coordenada);
//                marcador.title(aluno.getNome());
//                marcador.snippet(String.valueOf(aluno.getNota()));
//                googleMap.addMarker(marcador);
//            }
//        }
//        alunoDAO.close();

    }


    private LatLng pegaCoordenadaDoEndereco(String endereco){

        try {
            Geocoder geocoder = new Geocoder(getContext());

            List<Address> resultados = geocoder.getFromLocationName(endereco, 1);

            if(!resultados.isEmpty()){


                LatLng posicao =
                        new LatLng(resultados.get(0).getLatitude(),resultados.get(0).getLongitude());

                return posicao;
            }

        } catch (IOException e) {

            e.printStackTrace();
        }


        return null;
    }
}
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err: java.io.IOException: grpc failed
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at android.location.Geocoder.getFromLocationName(Geocoder.java:178)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at agenda.app.agenda.MapaFragment.pegaCoordenadaDoEndereco(MapaFragment.java:73)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at agenda.app.agenda.MapaFragment.onMapReady(MapaFragment.java:40)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at com.google.android.gms.maps.zzaj.zza(Unknown Source)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at com.google.android.gms.maps.internal.zzaq.onTransact(Unknown Source)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at android.os.Binder.transact(Binder.java:387)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at gl.b(:com.google.android.gms.DynamiteModulesB:20)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at com.google.android.gms.maps.internal.bf.a(:com.google.android.gms.DynamiteModulesB:5)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at com.google.maps.api.android.lib6.impl.bb.run(:com.google.android.gms.DynamiteModulesB:5)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at android.os.Looper.loop(Looper.java:148)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
09-11 01:04:42.236 14980-14980/agenda.app.agenda W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-11 01:04:42.241 14980-15033/agenda.app.agenda D/EGL_emulation: eglMakeCurrent: 0xae9d4780: ver 2 0 (tinfo 0xae9d27c0)
3 respostas

Ola Isaías,

Realmente fiz um teste rápido aqui na minha máquina e obtive o mesmo erro, inclusive com aplicativos que antes já estavam funcionando. Talvez isso tenha a ver com a versão da API do Android em que estamos testando. Aqui eu testei na API 26 que é a única que tenho baixada no momento mas eu vou testar com outra depois.

Você chegou a testar em um dispostivo real? Eu fiz o teste com o meu aqui e o mesmo código funcionou então está me parecendo algum bug do emulador mesmo. Até encontrei algumas referências a isso no stack overflow mas parece que ninguém encontrou uma solução ainda.

Eu tentaria o dispositivo real ou então alguma versão diferente da API. Se eu descobrir mais alguma coisa com relação a isso eu posto aqui, beleza?

Alguém conseguiu achar alguma solução para esse problema ?

O mesmo erro acontece comigo, ele não acha a localização da String endereço do método .