Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema na localização do mapa

Bom dia, quando estou rodando a aplicação, na hora que abre o mapa, ele está abrindo o mapa no local onde está meu primeiro aluno, e esse primeiro aluno, vem completo. Com o marcador e o snippet preenchido de forma correta. Os problemas são o seguinte: 1 - Gostaria que o mapa abrisse em outro local, em outro endereço, porém ele abre direto no local do primeiro aluno. 2 - Ele está adicionando o marcador apenas do primeiro aluno, e ignorando o restante

segue meu código

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 posicao = pegaCoordenada("Rua Anchizes Ferreira Catanhede 239 , Parque das nações , Limeira");

        if (posicao != null) {
            CameraUpdate update = CameraUpdateFactory.newLatLngZoom(posicao, 17);
            googleMap.moveCamera(update);
        }
        AlunoDAO dao = new AlunoDAO(getContext());
        for (Aluno aluno : dao.buscaAlunos()) {
            LatLng coordenada = pegaCoordenada(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);
            }
        }
        dao.close();

    }

    private LatLng pegaCoordenada(String endereco) {
        Geocoder geocoder = new Geocoder(getContext());

        try {
            List<Address> resultados = geocoder.getFromLocationName("Rua João Picirilo, 274, Campos Elíseos, Limeira", 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;
    }
}
2 respostas
solução!

Jilles, tudo bem ?

Cara seguinte, vamos lá uma coisa de cada vez.

  • Para resolver o problema de ter vários alunos e apenas estar colocando as informações em um único ponto do mapa, nós temos que nos atentar ao seu método pegaCoordenada(), repare que você passa o endereço pelo parâmetro contudo você não o usa em nenhum lugar, pois no momento que você está pedindo para o Geocoderpegar o resultado, sempre é com o mesmo resultado, imagino que você queira que isso seja dinâmico, passando o parâmetro que você recebe, isso deve solucionar isso.

  • Lembra que para gente conseguir iniciar o mapa de uma posição, temos o método moveCamera() do objeto GoogleMap que recebe por parâmetro CameraUpdate, para criarmos esse objeto usaremos a classe CameraUpdateFactory, usaremos o método new LatLng que passamos a posição onde ele deve iniciar, caso você queira que fique mais próximo, existe outro método que já te trás com o nível de zoom, newLatLngZoom, esse além da coordenada vai receber um inteiro que representa a quantidade de zoom que você deseja, numa escala de 0 a 21.

Abraços

:o To até agora me perguntando pq eu estava passando a string direto no meu método ...... como eu fiz isso e pq??? kkkkkkkkkk desculpa minha falta de atenção hehe . Valew matheus

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software