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;
}
Articoli simili
- Quanto sono accurate la latitudine/longitudine dei pin caduti usando l'applicazione Google Maps su un iPhone?
- C'è un modo per esportare i puntatori della mappa di Google (latitudine/longitudine) in un foglio excel?
- C'è una connessione tra i luoghi di coronavirus e i luoghi di rollout 5G?
- Qual è la relazione tra stagioni e latitudine?