Подождите, чтобы достичь порога точности с getCurrentPosition - PullRequest
5 голосов
/ 07 июня 2011

Просмотр веб-сайта GeoLocation Документация по API Существует два способа определения местоположения - getCurrentPosition для быстрого считывания местоположения и watchPosition для отслеживания изменений в положении.

То, что я ищу, это способ получить определение местоположения, которое является достаточно точным, как можно быстрее. Я думаю, что в идеале было бы использовать порог точности при вызове getCurrentPosition - и обработчик успеха вызывался бы, когда порог достигнут или превышено время ожидания (с максимально точным результатом).

Этого еще не существует, верно? Предположительно, было бы довольно просто реализовать это, просто добавив метод watchPosition, чтобы остановить проверку после истечения времени ожидания или порога. Я буду использовать этот подход (и намереваюсь опубликовать код), если никто не знает о встроенном методе для этого ...

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Нет встроенной функции. Я обнаружил, что тайм-аут лучше, чем заданная точность. Зачастую на iPhone точность будет не лучше, чем около 100 метров, поэтому продолжать проверять на лучшее - расточительно. Использование watchPosition() сработало лучше всего и, похоже, триангулирует, поэтому после трех чтений оно редко становится лучше. Я просто жду пять секунд и останавливаюсь.

Демо: http://jsfiddle.net/ThinkingStiff/3k859/

HTML:

<div id="result"></div>

Сценарий:

function setGeolocation() {

    var geolocation = window.navigator.geolocation.watchPosition( function ( position ) {

            document.getElementById( 'result' ).innerHTML += 
                  'lat: ' + position.coords.latitude + ', '
                + 'lng: ' + position.coords.longitude + ', '
                + 'accuracy: ' + position.coords.accuracy + '<br />';

        },
        function () {
            //error
        },
        {
            maximumAge: 250, 
            enableHighAccuracy: true
        } 

    );

    window.setTimeout( function () {

        window.navigator.geolocation.clearWatch( geolocation ) 

    }, 5000 );

};

setGeolocation();
2 голосов
/ 19 июня 2011

Основываясь на моем опыте разработки приложений J2ME для определения местоположения для такси, чип GPS требует некоторой инициализации для получения точного определения местоположения.Предпочтительным методом является использование метода, аналогичного watchPosition (), который будет поддерживать горячий чип GPS для обеспечения точного считывания местоположения.

Я думаю, что ваш подход теоретически обоснован, но его необходимо проверить на реальном устройстве, поскольку чипы GPS различаются по производительности на разных устройствах.

Надеюсь, это поможет.

...