04.08.2013 Views

um sistema de auxílio à coleta de dados na área de agricultura de ...

um sistema de auxílio à coleta de dados na área de agricultura de ...

um sistema de auxílio à coleta de dados na área de agricultura de ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

A classe MapaVisitas também é <strong>um</strong>a classe filha da MapActivity e herda seus métodos,<br />

além <strong>de</strong> implementar os métodos <strong>de</strong> localização da interface LocationListener. Uma das funções<br />

<strong>de</strong>sta classe é buscar as coor<strong>de</strong><strong>na</strong>das da gleba que estão armaze<strong>na</strong>das no banco e exibir no mapa<br />

com o perímetro <strong>de</strong>marcado e os pontos <strong>de</strong> <strong>coleta</strong>s <strong>de</strong>finidos, para isso ela utiliza as funções da<br />

classe ItemOverlay que <strong>de</strong>senha <strong>na</strong> tela e insere as imagens dos pontos selecio<strong>na</strong>dos. Entre outras<br />

funções da classe MapaVisitas está <strong>à</strong> criação <strong>de</strong> rotas da qual utiliza o recurso do GPS do<br />

dispositivo para i<strong>de</strong>ntificar a localização que se encontra e através do web service do Google Maps<br />

API que calcula <strong>um</strong>a rota até a localização da gleba que será visitada.<br />

O método calculaRota() da classe MapaVisitas é chamado por <strong>um</strong>a função do menu, este<br />

método capturar a localização do usuário e passa por parâmetro para a classe RotaAsyncTask como<br />

po<strong>de</strong> ser observado no exemplo abaixo.<br />

public void calculaRota() {<br />

double longitu<strong>de</strong>A = 0.0;<br />

double latitu<strong>de</strong>A = 0.0;<br />

double lngMl = 0.0;<br />

double latMl = 0.0;<br />

String cor<strong>de</strong><strong>na</strong>das();<br />

if (glebaObj != null) {<br />

if (glebaObj.getPontosGPS() != null && !glebaObj.getPontosGPS().equals("")) {<br />

cor<strong>de</strong><strong>na</strong>das = glebaObj.getPontosGPS().split(",");<br />

longitu<strong>de</strong>A = Double.parseDouble(cor<strong>de</strong><strong>na</strong>das(0));<br />

latitu<strong>de</strong>A = Double.parseDouble(cor<strong>de</strong><strong>na</strong>das(1));<br />

if (minhaLocalizacao.getMyLocation() != null) {<br />

lngMl=minhaLocalizacao.getMyLocation().getLongitu<strong>de</strong>E6()/1E6;<br />

latMl=minhaLocalizacao.getMyLocation().getLatitu<strong>de</strong>E6()/1E6;<br />

new RotaAsyncTask(mapView).execute(<br />

latMl, lngMl, // Latitu<strong>de</strong>, Logintu<strong>de</strong> <strong>de</strong> Origem<br />

latitu<strong>de</strong>A, longitu<strong>de</strong>A // Latitu<strong>de</strong>, Longitu<strong>de</strong> <strong>de</strong> Destino);<br />

} else {<br />

Mensagem.mensagemExibir("Aviso!",<br />

"Não foi possivel encontrar sua Localização.", this);<br />

}<br />

}<br />

}<br />

}<br />

A Classe RotaAsyncTask é responsável por estabelecer a conexão com a API do Google<br />

Maps que retor<strong>na</strong> no formato xml, que é tratado no <strong>sistema</strong> para pegar as coor<strong>de</strong><strong>na</strong>das e passar para<br />

a classe RotaOverlay responsável por <strong>de</strong>senhar a rota no mapa e exibir <strong>na</strong> tela (Figura 18).<br />

54

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!