2012-05-24 105 views
1

在我的應用程序中,我想通過GPS和/或網絡獲取緯度和經度值。我的代碼工作,但有一段時間,它提供了準確的價值一段時間它不給予準確的價值,有些時候它給了距離準確的地方10或20米的價值。 代碼:Android:無法獲得準確的經度和緯度值

mlocListener = new MyLocationListener(getApplicationContext()); 
    /* Use the LocationManager class to obtain GPS locations */ 
    LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
     mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
       10000, 0, mlocListener); 
    } else if (mlocManager 
      .isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 
     mlocManager.requestLocationUpdates(
       LocationManager.NETWORK_PROVIDER, 10000, 0, mlocListener); 
    } 

    Location gpsLocation = mlocManager 
      .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    Location netLocation = mlocManager 
      .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

    if (gpsLocation != null) { 
     mlocListener.latitude = gpsLocation.getLatitude(); 
     mlocListener.longitude = gpsLocation.getLongitude(); 

     double lat = (double) (gpsLocation.getLatitude()); 
     double lng = (double) (gpsLocation.getLongitude()); 


     Toast.makeText(this, "Location attributes using GPS Provider", 
       Toast.LENGTH_LONG).show(); 

    } else if (netLocation != null) { 
     mlocListener.latitude = netLocation.getLatitude(); 
     mlocListener.longitude = netLocation.getLongitude(); 

     double lat = (double) (netLocation.getLatitude()); 
     double lng = (double) (netLocation.getLongitude()); 



     Toast.makeText(this, "Location attributes using NETWORK Provider", 
       Toast.LENGTH_SHORT).show(); 

    } 
+0

可能重複的[Gps在android中非常不準確](http://stackoverflow.com/questions/7196664/gps-is-horribly-inaccurate-in-android) – assylias

+0

嘗試mContext.getSystemService(...); mContext是你的活動的背景 – Akram

+0

對不起,如果這段代碼是重複我的我... –

回答

2

使用loc.getAccuracy()方法檢查您收到的位置的準確性級別。如果該值小於10(或小於該值),則可以考慮它,否則請等待位置列表器取回另一個位置。

getLastKnownLocation是您最後一次知道的位置,不要只用getAccuracy也檢查時間。

如果您只需要準確的位置,最好不要使用getLastKnownLocation。

0

通常GPS的準確高達3米但如果10至20米,它與GPS的東西可能。

一個標準的民用GPS接收器提供的精度可低至幾米 米。在實踐中,所接收的衛星的數量和幾何結構相當大地影響精確度,並且在日常使用中,可以預期約20m的精度爲012m。

GPS Accuracy

此外,如果你正在從網絡提供商您的當前位置,您可能希望更準確的位置。

+1

所以GPS更準確的相關網絡提供 –

+0

@VinitVikash,是 – Habib

0

如果你期待獲得最大的精確度,我會說,你解僱網絡提供商,因爲它是由與電話運營商等

locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER) 

其他因素的影響,這將手機內部得到你的位置GPS接收器(時間成本高),但它爲您提供了最大可能的準確度。