2013-12-21 125 views
0

我正試圖編寫一個簡單的應用程序,它在Android中使用Google Maps V2 API。 在計時器中,我正在讀取googleMap mylocation函數中的lat long值。谷歌地圖緯度/精度,V2-Android

altitude = googleMap.getMyLocation().getAltitude(); 
latitude = googleMap.getMyLocation().getLatitude(); 
longitude = googleMap.getMyLocation().getLongitude(); 

我繪製了lat,long使用addPolyline()方法。

我面臨的問題是在前景中使用此應用程序在道路上行走時,我正在直線行走,但情節正在附近的建築物中進行。我已經確定2拉特,長距離在10米的距離。

我用的公式,

public double calcDistance(double lat1, double lng1, double lat2, 
     double lng2) { 

    int r = 6371; // average radius of the earth in km 
    double dLat = Math.toRadians(lat2 - lat1); 
    double dLon = 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(dLon/2) 
      * Math.sin(dLon/2); 
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 
    double d = r * c; 
    return d; 
} 

問題 - 如何得到一條直線,如何讓accurancy或誤差範圍,這樣,而在路上走的人,我不進入建築物

回答

0

地圖中存在錯誤,GPS讀數存在錯誤。由於衛星阻塞和可見衛星的多路徑,附近的大樓會增加GPS讀數的誤差。您可能需要考慮將您的初始實驗限制在沒有建築物的區域。關於直線,如果您有幸擁有地圖數據,您可以將GPS讀數投影到路上最近的點。

+0

能做到這一點,但我沒有我的問題得到回答 – mSO

+0

瞭解噪音是減少噪音的好開始。例如,卡爾曼濾波器的性能取決於指定的噪聲和運動模型的質量。瞭解GPS噪聲是很困難的(例如,由於改變了選擇的GPS衛星星座而引起的位置跳躍),以便了解附近沒有大型建築物。因此,您瞭解GPS錯誤的任務會更容易。我希望有所幫助。 – gregS

0

如果你完全依賴於你從谷歌地圖位置的LocationManager返回的位置,然後繪製出你會得到有時由於GPS鎖定而導致關閉的點,但實際上你沒有辦法做到這一點。歡迎您不要使用谷歌地圖位置,並使用Fused location API來嘗試獲得更好的結果。

谷歌地圖API不爲道路提供節點,以便它幾乎是不可能告訴如何遠點是從道路,試圖將其撫平

+0

我在某處讀過我可以使用卡爾曼濾波器去除GPS讀數中的噪音。像mapmyrun這樣的應用程序如何做對。我有2部手機,而我的地圖很多時候都是偏離軌道,而mapmyrun在路上。 – mSO