2013-04-25 17 views
5

GPS noktasının belirli bir Başlangıç ​​ve Bitiş GPS konumu kümesinde bulunup bulunmadığını kontrol etmek için Android'de bir çözüm arıyorum. Örneğin, Bay A, X noktasından başlar ve Y üzerinden Z noktasına ulaşır. Şimdi eğer Bay B, bir P konumu verdiyse, bu noktada P'nin, A'nın rotası üzerinde olup olmadığını kontrol etmek isteriz. GPS'in bunun için yeterli olmadığı anlaşılıyorsa, başka yollardan da önerebilirsiniz.Bir GPS noktasının belirli bir Başlangıç ​​ve Bitiş GPS konumu kümesinde bulunup bulunmayacağı nasıl bulunur?

Sizden haber almak için sabırsızlanıyorum!

cevap

0

"Verilen başlangıç ​​ve bitiş kümesi" veritabanınızda tanımlanmış bir kökünüz olduğu anlamına gelir. Cevabım aynı amaca dayanıyor.

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(); 
} 

Şimdi tek DB'ın biriyle Bay A'nın enlem-boylam değerleri karşılaştırmak gerekir, aşağıdaki yönteme göz at. Eğer mesafe birkaç metre ise, bu da Bay A'nın bu noktayı ziyaret ettiği anlamına gelir. Bu mantığı kullanarak, Bay A'nın tüm GPS Noktasını DB'nizde saklanan kökle kontrol etmeniz gerekir.

+0

Cevabınız için teşekkürler Lucifer. Google Harita API'sı gibi herhangi bir API kullanarak mevcut konumun iki GPS noktası arasında getirilmesi mümkün mü? – Supertron

+0

@Supertorn, Hayır Ben öyle düşünmüyorum, Bu benim cevabımı bir varsayımla başlat. – Lucifer