5
respostas

Como utilizar o retângulo da tela como filtro para buscas no mapa

Estou desenvolvendo um app que terá vários endereços fixos onde irão surgir um marcador para cada um desses endereços. Minha dúvida é como utilizar a própria tela, em um nível de zoom pré-determinado para que a aplicação não me retorne todos os endereços cadastrados do sistema e sim apenas os referentes ao quadrante da tela naquele zoom.

5 respostas

Olá Wesley, tudo bem?

Fiz um projeto parecido uma vez, usei na época um servidor Parse onde tinha as informações de latitude e longitude cadastradas, fazia a query para pegar essas informações do servidor Parse e nessa query eu colocava para filtrar os valores que estivessem por exemplo a 0.05 da minha posição atual de latitude e longitude. Através do comando

query.whereGreaterThanOrEqualTo();
query.whereLessThanOrEqualTo();

Com isso eu conseguia pegar por exemplo os valores de endereços que estavam dentro do zoom da tela

Abs

Olá Rafael! Tudo bem sim obrigado,

Muito obrigado pelo retorno!!! Olha, eu até estava pensando em ir por este caminho mesmo, em procurar valores próximos ao meu. Mas acho que deve existir alguma api do android que me retorne somente aqueles em que as coordenadas forem as exibidas no retângulo da tela...

Olá Wesley,

Na época cheguei a procurar algumas api que pudessem fazer esse processo, mas não tivesse muito sucesso (pode ser que hoje tem saído algo novo e que faça esse tipo de análise). O que eu acho que pode ser uma dificuldade na questão da API é que o zoom da câmera pode ser facilmente ajustado pelo desenvolvedor atráves do comando:

animateCamera(CameraUpdateFactory.zoomTo(5));

Mas utilizando a query, a implementação seria quase que imediata, você tendo o valor da latitude e longitude local, você pode filtrar a query para uma região próxima que ela funcionaria sem problema, pegando somente os valores que estariam dentro desse limite.

Espero te ajudado de alguma forma

Abs

Claro que ajudou!!! :) Irei seguir a sua dica para resolver logo o problema mas deixarei o tópico aberto por algum tempo para ver se eu mesmo ou outra pessoa possa também contribuir neste assunto...

Abraço!

Vou fechar este tópico... A forma que estava procurando é através do método abaixo. googleMap.getProjection().getVisibleRegion()

Ex.:

@Override public void onCameraMoveStarted(int reason) {

if (reason == OnCameraMoveStartedListener.REASON_GESTURE) { Toast.makeText(getContext(), "O usuário usou gesto no mapa.", Toast.LENGTH_SHORT).show(); }

Toast.makeText(getContext(),"latlng: " + googleMap.getProjection().getVisibleRegion(), Toast.LENGTH_LONG).show();

}