QNA > I > In Android, Come Posso Calcolare La Distanza In Auto Tra Due Luoghi Se Conosco La Loro Latitudine E Longitudine?

In Android, come posso calcolare la distanza in auto tra due luoghi se conosco la loro latitudine e longitudine?

google fornisce il seguente url :
http://maps.google.com/maps/api/directions/xml?origin=lat1,long1&destination=lat2,long2&sensor=false&units=metric

quindi se sostituisci lat1, long1 con le tue coordinate di origine e lat2, long2 con la destinazione puoi ottenere una risposta in formato JSON o XML come da tua scelta, che puoi usare per ottenere informazioni rilevanti.

Sostituisci xml con json ad esempio

http://maps.google.com/maps/api/directions/json?origin=lat1,long1&destination=lat2,long2&sensor=false&units=metric
per ottenere i dati in formato JSON.

Ora sostituisci tutte le variabili con i loro rispettivi valori per esempio :

http://maps.google.com/maps/api/directions/json?origin=12.961652,77.636785&destination=12.963837,77.641334&sensor=false&units=metric

Questo ti darà il risultato in formato XML...
hai solo bisogno di analizzare questi dati per ottenere la cosa richiesta

Ho scritto una funzione qui che fa tutto il lavoro e restituisce la distanza...

public String getDistance(double lat1, double lon1, double lat2, double lon2) {
String distance = "";
System.out.println(lat1+" "+lon1+" "+lat2+" "+lon2);
String url = "http://maps.google.com/maps/api/directions/xml?origin=" + lat1 + "," + lon1 + "&destinazione=" + lat2 + "," + lon2 + "&sensor=false&units=metric";
String tag[] = {"text"}; //darà la distanza come stringa ad esempio 1.2 km
// o tag[] = {"value"} se vuoi ottenere la distanza in metri ad esempio 1234

HttpResponse response = null;
try {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(url);
response = httpClient.execute(httpPost, localContext);
InputStream is = response.getEntity().getContent();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(is);
if (doc != null) {
NodeList nl;
ArrayList args = new ArrayList();
for (String s : tag) {
nl = doc.getElementsByTagName(s);
if (nl.getLength() > 0) {
Node node = nl.item(nl.getLength() - 1);
args.add(node.getTextContent());
} else {
args.add(" - ");
}
}
distance = String.format("%s", args.get(0));
}
else
{
System.out.print("Doc is null");
}

} catch (Exception e) {
e.printStackTrace();
}
return distance;
}

Di Sateia Suggs

Cos'è l'architettura IoT? :: Perché sempre più persone si stanno disabbonando dalla pay-tv?
Link utili