10

私はGoogle APIとMapActivity、MapViewなどを使用しています.
現在の場所を取得する必要があるときは、このコードを最初に使用します:

myLocationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
// Sets the criteria for a fine and low power provider
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
crit.setPowerRequirement(Criteria.POWER_LOW);    
// Gets the best matched provider, and only if it's on
String provider = myLocationManager.getBestProvider(crit, true);
// If there are no location providers available
if (provider == null){
    OnClickListener listener = new OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            // Closes the activity
            finish();
        }
    };
    Utils.getInstance().showAlertDialog(this, R.string.warning_dialog_title,
                               R.string.no_location_providers_error_message,
                            android.R.drawable.ic_dialog_alert, false, listener);
}
// Location services is enabled
else{
    myLocationListener = new MyLocationListener();
    myLocationManager.requestLocationUpdates(
            provider,
            0,
            0,
            myLocationListener);        
    // TODO - put a marker in my location       
    GeoPoint currentGeoPoint = MapUtils.getInstance().
            getCurrentLocation(myLocationManager, provider);        
    // Center to the current location
    centerLocation(currentGeoPoint, MAX_ZOOM);
}

また、「現在の場所に戻るボタン」もあります。これは、ユーザーがマップを移動してすぐに現在の場所に戻りたい場合に使用します。

私の質問は、位置情報を取得するたびgetBestProvider()にメソッドを使用する必要があるかどうかです。

最後に選択したプロバイダーを保存できますが、条件は毎秒変わる可能性があります。

  1. ユーザーが GPS をオフにしました
  2. GPS信号なし
  3. 現在の状況では NETWORK_PROVIDER の方が優れています
  4. 等..

正しいアプローチは何ですか?

4

2 に答える 2

1

コメントで言われたように、これが答えです: http://developer.android.com/guide/topics/location/strategies.html#BestEstimate

于 2013-04-11T15:23:50.440 に答える