2013-04-25 16 views
5

Sto cercando una soluzione in Android per verificare se un punto GPS si trova in un dato set di posizione GPS iniziale e finale o meno. Per esempio il signor A inizierà dal punto X e raggiungerà il punto Z per Y. Ora se il signor B ha dato una posizione P, allora vogliamo verificare se questo punto P si trova sulla rotta del signor A oppure no.Come scoprire se un punto GPS si trova in un determinato set di posizione GPS iniziale e finale?

Se sembra che il GPS non sia sufficiente per questo, puoi suggerire anche altri modi.

Non vedo l'ora di risentirci !!

risposta

0

Suppongo che "Insieme di inizio e fine" indica che nel database è stata definita una radice. La mia risposta è basata sullo stesso scopo. Date un'occhiata al seguente al metodo,

public static float getDistance (float lat1, float lng1, float lat2, float lng2) 
{ 
    double earthRadius = 3958.75; 
    double dLat = Math.toRadians(lat2-lat1); 
    double dLng = Math.toRadians(lng2-lng1); 
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
    Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * 
    Math.sin(dLng/2) * Math.sin(dLng/2); 
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    double dist = earthRadius * c; 

    int meterConversion = 1609; 

    return new Float(dist * meterConversion).floatValue(); 
} 

Ora è necessario confrontare i valori lat-lon vostra del signor A con quello del DB di uno. Se la distanza è di pochi metri significa che Mr A ha visitato quel punto. Usando questa logica è necessario controllare tutti i punti GPS di Mr A con la radice memorizzata nel DB.

+0

Grazie Lucifero per la tua risposta. È possibile recuperare tutte le posizioni disponibili tra due punti GPS utilizzando qualsiasi API come l'API di Google Maps? – Supertron

+0

@Supertorn, No, non credo, Inizio la mia risposta con un'ipotesi. – Lucifer

Problemi correlati