Ни одно местоположение на Картах Google не имеет высоты (согласно location.hasAltitude ()) - PullRequest
0 голосов
/ 13 февраля 2019

Я создаю базовые Часы путешественника ap p, которые предоставляют пользователю информацию о его / ее местоположении, такую ​​как (долгота, широта, высота и т. Д.).

Однако высота отображается вжурналы всегда 0.0 (несмотря на присвоение некоторого ненулевого значения высоты в расширенных элементах управления).

В соответствии с

locationProvider.supportsAltitude()
location.hasAltitude()

устройство поддерживает высоту, но ни одно местоположение не имеетлюбая высота.

Даже гора Эверест (в соответствии с координатами) "не имеет" высоты.

Я получаю другие данные о местоположении, такие как Широта, Долгота .

Что я могу сделать?

1 Ответ

0 голосов
/ 13 февраля 2019

Высота GPS может иметь много ошибок для более дешевых устройств.

Вы также можете попробовать SensorManager приблизить высоту, используя датчики давления, которые могут иметь некоторые неточности.

SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE,pressure)

Что-токак это:

public class MainActivity extends AppCompatActivity {

  private SensorManager sensorManager;
  private Sensor pressureSensor;
  private SensorEventListener sensorEventListener = new SensorEventListener() {

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
      float[] values = sensorEvent.values;
      flat altitude = SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, values[0]);

    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {
    }
  };

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    pressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
  }

  @Override
  protected void onResume() {
    super.onResume();
    sensorManager.registerListener(sensorEventListener, pressureSensor, SensorManager.SENSOR_DELAY_UI);
  }

  @Override
  protected void onPause() {
    super.onPause();
    sensorManager.unregisterListener(sensorEventListener);
  }
}

Источник: Документы Android

...