Ionic4 watchPosition и getCurrentPosition of Geolocation, не точный с Ionic / Capacitor - PullRequest
2 голосов
/ 03 июня 2019

Я использую Capacitor для создания моего Ionic приложения. В приложении я хочу показать текущее положение на карте через GPS, конечно.

Следующий код работает и дает мне правильный маркер на карте, как я хочу, но .. Это далеко не точно.

async getLocation() {
    var self = this;
    let location = await Geolocation.getCurrentPosition({
        enableHighAccuracy: true,
        timeout: 1000
    });
    self.marker.setLngLat([location.coords.longitude, location.coords.latitude])
    const wait = Geolocation.watchPosition({enableHighAccuracy: true, timeout: 1000}, (position, err) => {
        self.marker.setLngLat([position.coords.longitude, position.coords.latitude])
    });
}

Маркер ходит как сумасшедший. Бывает в каждой локации, на которой я тестирую. Он движется не сантиметрами, а метрами вокруг моего местоположения ...

Чего мне не хватает, что дает мне менее точные координаты GPS? Я думал, что enableHighAccuracy: true достаточно, но это не так.

1 Ответ

2 голосов
/ 10 июня 2019

Позиционная информация может быть возвращена от разных провайдеров местоположения: спутниковый, сетевой, пассивный. Для достижения наилучших результатов вам следует отказаться от местоположений, предоставленных сетевыми и пассивными провайдерами.

Насколько мне известно, современные API определения местоположения не различают провайдеров (см. Объединенное местоположение), но вы всегда можете проверить coords.accuracy, чтобы получить представление о точности позиции.

Если местоположение триангулировано с помощью спутников, точность всегда будет наилучшей. Обычно ниже 16 (измеряется в метрах), но определенно ниже 30 . Вы можете безопасно отбрасывать координаты с точностью выше этой.

...