2016-12-21 19 views
2

私のアンドロイドアプリでは、以下のコードを使用してユーザーの現在地を取得しています。アンドロイド - 位置情報の更新を停止する

private void getDeviceLocation() { 
    Boolean mLocationPermissionGranted = //ask for permission and stuff 
    if (mLocationPermissionGranted) { //if permission granted 
     mCurrentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
     LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 
    } 
} 

私は私のonLocationChangedメソッドの内部I removeLocationUpdatesので1回の位置更新をしたいです。それをやって

@Override 
public void onLocationChanged(Location location) { 
    mCurrentLocation = location; 
    LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 
} 

onLocationChangedメソッドを呼び出して停止しますが、私は私の場所はまだ今までに数秒を変え続け地図で見ます。精度半径は増減し続けます。私はそれを望んでいない。私は "青い点"が安定し、動かないようにしたい。

+0

必要なものをあなたが持っているかもしれない、このsampleをチェック'mGoogleMap.setMyLocationEnabled(true); 'を使用しました。この機能により、Googleマップはあなたのコードなしでユーザーの場所にアクセスできます。それはできないので、役に立つことができます。 – Gorcyn

+0

@Gorcyn ya、私は 'setMyLocationEnabled(true)'を使用しましたが、それをfalseに設定するだけで "青い点"が削除されます。問題はまだそこにある –

答えて

1

まず、青い点には独自の位置情報源があります。 setMyLocationEnabled(true)を設定すると、あなたの位置を正確に特定し始めます。 したがって、青色の点はロケーションリクエストとは関係ありません。

Documentation MyLocationLayerのために言います(ブルードット)

有効と場所が利用可能ですが、私の-場所層 は、継続的にユーザの現在位置の表示

手段を描き、 MyLocationLayerが新しい場所を受信するたびに、青い点が移動します。

しかし、この動作を変更する方法があります:setLocationSource (LocationSource source)

DocumentationはsetLocationSource

のために言いますが、私の-場所の層の位置情報ソースを置き換えます。

手段には、青い点(MyLocationLayer)に

をあなたの場所の要求と行動(あなたが望むように一つだけの場所)を統合することができ、正確にあなたが

+0

それは非常に有用だった、ありがとう! –

関連する問題