2016-05-17 25 views
-1

我已經創建了可與Google地圖一起工作的應用程序,並且它可以與Google地圖服務一起使用。但是出現了一個問題。 時,我有時會要求當前位置它做工精細,並返回準確的當前位置,但其他時候,它返回一個當前位置 在那裏我不是。 誰可以給我提供的解決方案 這是代碼爲什麼使用谷歌地圖和Android獲取當前位置有時會返回最後一個位置而不是當前位置

private GoogleApiClient mLocationclient; 
GoogleMap mMap;    

// connect client to the map by take his location 
      mLocationclient = new GoogleApiClient.Builder(this) 
        .addApi(LocationServices.API) 
        .addConnectionCallbacks(this) 
        .addOnConnectionFailedListener(this) 
        .build(); 
      mLocationclient.connect(); 
      // end connect 

//獲取當前位置

public LatLng getCurrentLocation(Context context, GoogleMap mMaps,GoogleApiClient mlocationclient){ 
    LatLng ll=null; 
    Location currentLocation= LocationServices.FusedLocationApi.getLastLocation(mlocationclient); 
    if(currentLocation==null) 
     Toast.makeText(context,"could not connect",Toast.LENGTH_SHORT).show(); 
    else { 
      ll=new LatLng(
       currentLocation.getLatitude(), 
       currentLocation.getLongitude() 
     ); 
    } 
    return ll; 
} 
+1

,因爲這是最後一次能得到一個成功的位置。如果你需要一些非常準確的東西,那麼你應該使用請求位置更新 – tyczj

+0

獲得一次性位置,那麼下一次該問題阻止它形成當前位置。並沒有U意味着聽改變當前位置 –

+0

是的,你需要聽一次的位置更改 – tyczj

回答

3

要調用getLastLocation();將返回上一次您的GPS設備能夠獲取的位置。

如果要強制設備獲取的位置嘗試:

lm.requestSingleUpdate(LocationManager.GPS_PROVIDER, this, null); 
    Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    lat = loc.getLatitude(); 
    lng = loc.getLongitude(); 

此外,你可以看看更多,情報此引用。 requestSingleUpdate

+0

它是requestLocationUpdates是什麼和什麼是LM? –

+0

不,您可以使用requestLocationUpdates,如果您想請求定期更新位置。 requestSingleUpdate將在某個時間點請求單個更新。 LM是位置經理 –

+0

好聽。我的應用程序將攝像頭移動到當前位置聆聽點擊按鈕什麼是最好的方式 –

相關問題