Привет!
Я пытался реализовать простое средство отслеживания GPS. Поэтому используется
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);
Затем я использовал
public void onLocationChanged(Location location) {
метод для чтения высоты моего текущего местоположения.
Но я действительно не знаю то, что возвращает Location.getAltitude (). В документе говорится, что он возвращает высоту. Но это находится в метрах? или праздники? если я поместил телефон на стол рядом со мной, это значение изменяется между 500 и-500??
Как это действительно работает???
Значение высоты, которое вы получаете в метрах от опорного эллипсоида GPS (WGS84) , а не от геоид .
По моему собственному опыту, GPS действительно плохо работает на высоте.
Я прочитал это в Статусе GPS FAQ:
GPS не сообщает высоту над средним уровнем моря, а система GPS сравнивает высоту с опорным эллипсоидом WGS84, который может быть выше или ниже реального уровня моря. В разных частях Земли он может отклоняться более чем на 200 метров (в зависимости от распределения масс Земли). Например, поверхность геоида вокруг Флориды находится над средним уровнем моря примерно на 30-40 метров, а это означает, что если вы стоите на берегу, вы увидите -30 метров над уровнем моря. Это нормально, а не ошибка и вызвано тем фактом, что высота определяется относительно искусственной опорной поверхности, а не уровня моря. Если вам интересна эта тема, я рекомендую прочитать Средний уровень моря, GPS и геоид .
Я предполагаю, что ваш стол находится внутри здания. Если вы получаете GPS-привязку в здании, вы не должны ожидать, что точность будет очень высокой. Пробовали ли вы узнать точность фиксации, вызвав getAccuracy()?
.