2

組み込みの「現在地」ボタンの操作について質問があります。私のセットアップでは

mMap.setMyLocationEnabled(true);

そのため、ボタンはマップ上にレンダリングされ、GPS がオンになっていると魅力的に機能します。GPS をオフにすると、機能しなくなります。GPS が有効な場合にのみ機能する「現在地」ボタンの標準的な動作ですか?

GPS を無効にしても、大まかな位置を地図上に表示したいと考えています。これを行うには LocationManager を使用する必要がありますか?

ありがとう

4

3 に答える 3

5

LocationSourceAndroid Maps API V2では、とを使用LocationSource.OnLocationChangedListenerして独自の位置情報の更新を渡し、地図に表示される位置を制御できます。

たとえば、通常のを介して場所の更新を聞いGPS_PROVIDERたり、場所を更新したりして、これらの場所をに渡すことができます。あなたが渡すものは何でも地図に表示されるものです。NETWORK_PROVIDERLocationListenerLocationSource.OnLocationChangedListener

まず、:でオブジェクトを宣言しOnLocationChangedListenerます。Activity

private OnLocationChangedListener mListener; //Used to update the map with new location

次に、アクティビティのLocationSourceを次のように実装します。

public class MapScreen extends FragmentActivity implements LocationSource {

onCreate()で、Mapオブジェクトを設定するときにLocationSource、これをActivity設定します。

...
// Show the location on the map
mMap.setMyLocationEnabled(true);
// Set location source
mMap.setLocationSource(this);
...

次に、LocationSourceインターフェースに必要なメソッドを追加します。

/**
 * Maps V2 Location updates
 */
@Override
public void activate(OnLocationChangedListener listener) {
    mListener = listener;       
}

/**
 * Maps V2 Location updates
 */
@Override
public void deactivate() {
     mListener = null;      
}

最後の部分は、場所の更新を通常LocationListenerからActivity実装に渡すことLocationSourceです。

//Update real-time location on map
if (mListener != null) {
    mListener.onLocationChanged(location);
}

GPS_PROVIDERこのプロバイダーからmListener.onLocationChanged()メソッドに位置情報を渡し、GPSをオフにしている場合、でそれ以上のアクションを実行しないと、最新LocationSourceのGPS位置情報が画面に表示されたままになります。この時点で、をリッスンし、NETWORK_PROVIDERこれらの場所の更新をmListener.onLocationChanged()メソッドに渡すことができます。

于 2013-03-08T04:20:46.607 に答える
1

最後の既知の場所をキャッシュして、GPSがオンになっていない場合やGPSが利用できない場合に表示する必要があります。

于 2013-03-04T16:38:28.243 に答える