Quantcast
Channel: GUJ - Tópicos com a tag java
Viewing all articles
Browse latest Browse all 17410

Erro ao recuperar uma LatLng através do Geocoder

$
0
0

@Lucas_Marques1 escreveu:

Estou desenvolvendo meu tcc, onde insiro estabelecimentos de minha base de dados no mapa, e estou me baseando nos cursos do Alura para fazer essa pesquisa através do Geocoder que me trás a Latitude e Longitude de um endereço. Porém estou tendo um problema, esse Geocoder ao fazer o método getFromLocationName() está sempre me retornando nulo para todos os endereço. Antes esta parte estava ok, funcionando normal, não mexi em nada e começou a dar esse problema comigo. Estou quebrando a cabeça e já pesquisei muito para tentar resolver e nada. Segue código:


package br.com.alura.searchdrink.task;

import android.app.ProgressDialog;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.util.Log;
import android.widget.Toast;

import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import br.com.alura.searchdrink.R;
import br.com.alura.searchdrink.fragment.MapaFragment;
import br.com.alura.searchdrink.modelo.Bar;

public class TarefaDownloadLocalizacaoBares extends AsyncTask<DatabaseReference, Void, List> {

private final Context context;

private List<Estabelecimento> estabelecimentos;

private ProgressDialog progresso;

public TarefaDownloadLocalizacaoBares(Context context){
    this.context = context;
}

@Override
protected void onPreExecute() {
    Log.i("AsyncTask", "Exibindo ProgressDialog na tela Thread: " + Thread.currentThread().getName());
    progresso = ProgressDialog.show(context, "Por favor aguarde ...",
            "Baixando Estabelecimentos...");
}

@Override
protected List<Bar> doInBackground(DatabaseReference... dbs) {

    estabelecimentos = new ArrayList<>();

    ValueEventListener postListener = pegaEstabelecimentos();
    dbs[0].addValueEventListener(postListener);

    synchronized (estabelecimentos){
        try {
            estabelecimentos.wait();
        } catch (InterruptedException e) {e.printStackTrace();}
    }

    return estabelecimentos;
}


@Override
protected void onPostExecute(List<Estabelecimento> e) {

    if (e.size() != 0) {
        for (Estabelecimento estabelecimento : e) {
            LatLng coordenada = pegaCoordenadaDoEndereco(estabelecimento.getEndereco());
            if (coordenada != null) {
                MarkerOptions marcador = new MarkerOptions();
                marcador.position(coordenada);
                marcador.title(estabelecimento.getNome());
                marcador.snippet(String.valueOf(estabelecimento.getTelefone()));
                marcador.icon(BitmapDescriptorFactory.fromResource(R.drawable.copocheio_mapa));
                MapaFragment.mapa.addMarker(marcador);

            }
        }
    }

    progresso.dismiss();

}

private LatLng pegaCoordenadaDoEndereco(String endereco) {

    try{
        Geocoder geocoder = new Geocoder(context);

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

@NonNull
private ValueEventListener pegaEstabelecimentos() {
    return new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            synchronized (estabelecimentos) {

                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {

                    Map<String, Object> map = (HashMap<String, Object>) snapshot.getValue();

                    String nome = String.valueOf(map.get("nome"));
                    String endereco = String.valueOf(map.get("endereco"));
                    String telefone = String.valueOf(map.get("telefone"));
                    String site = String.valueOf(map.get("site"));
                    String email = String.valueOf(map.get("email"));
                    String tipoBar = String.valueOf(map.get("tipoBar"));

                    if (endereco != null) {
                        Estabelecimento estabelecimento = new Estabelecimento(nome, endereco, telefone, site, email, tipoBar);
                        estabelecimentos.add(estabelecimento);
                    }
                }

                estabelecimentos.notifyAll();

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            // Getting Post failed, log a message
            Log.w("AsyncTask", "loadPost:onCancelled", databaseError.toException());
            // ...
        }
    };
}

}

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 17410

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>