Intereting Posts
Android JSON Jackson Tutorial Тестирование Unit.startService ()? Разработка Android – любой пример Google + SDK или кода? Целевой узел не должен быть нулевым или задан в параметрах Ошибка типа 3 Ошибка: класс действия {} не существует Как установить заставку для интерактивного андроида До того, как менеджер загрузки Android получит статус загрузки, скачав ссылку Id? Почему gcm docs рекомендуют аннулировать регистрацию при обновлении приложения? Android: как сделать это без пробела между двумя кнопками в горизонтальном линейном режиме Как получить доступ к андроиду: ярлык для действия Загружайте файлы и храните их локально с помощью Phonegap / jQuery Mobile Android и приложений для iOS PhoneGap Camera API для Android – Исключение нечистоты Развертывание на нескольких эмуляторах в студии Android Как обеспечить, чтобы приложения Android phonegap / cordova использовали веб-обзоры Chrome? Определите, являются ли два Java-объекта одного класса

Получить координаты из аппаратного GPS

Я нашел много вопросов о координатах GPS, но не тот, который подтверждает использование мобильного аппаратного GPS вместо Web-GPS, такого как geoLocation и т. П.

Мой фактический метод:

Я использую navigator.geolocation.getCurrentPosition() , Lat/Long поступает из Интернета, вот код:

 function getGPS(funcCallBack) { if (navigator.geolocation) { var timeoutVal = getCookie("GPSTimeout"); navigator.geolocation.getCurrentPosition(sucess ,error ,{enableHighAccuracy: true ,timeout: timeoutVal ,maximumAge: 0} ); } else{ alert('GPS is turned off, or was not possible to find it. Now, doing the login without localization.'); window.gpsLat = 0; window.gpsLng = 0; window.gpsAcc = 0; funcCallBack(); } function sucess(position) //sucess { window.gpsLat = position.coords.latitude; window.gpsLng = position.coords.longitude; window.gpsAcc = position.coords.accuracy; funcCallBack(); } function error() //error { window.gpsLat = 0; window.gpsLng = 0; window.gpsAcc = 0; funcCallBack(); } } и function getGPS(funcCallBack) { if (navigator.geolocation) { var timeoutVal = getCookie("GPSTimeout"); navigator.geolocation.getCurrentPosition(sucess ,error ,{enableHighAccuracy: true ,timeout: timeoutVal ,maximumAge: 0} ); } else{ alert('GPS is turned off, or was not possible to find it. Now, doing the login without localization.'); window.gpsLat = 0; window.gpsLng = 0; window.gpsAcc = 0; funcCallBack(); } function sucess(position) //sucess { window.gpsLat = position.coords.latitude; window.gpsLng = position.coords.longitude; window.gpsAcc = position.coords.accuracy; funcCallBack(); } function error() //error { window.gpsLat = 0; window.gpsLng = 0; window.gpsAcc = 0; funcCallBack(); } } 

Моя проблема:

Иногда, когда я делаю логин, я не получаю координаты GPS (они приходят 0), и иногда я получаю координаты с более чем 2 000 Точность (это не точно).

Кстати, я тестирую GPS на интернет-сервисе данных, когда я пользуюсь Wi-Fi-соединением, он отлично работает с точностью менее 100 Точность.

Детали:

Возможно, вы жалуетесь:

  1. timeoutVal : это куки с номером 5000 внутри него.
  2. funcCallBack : это функция, которая продолжает операцию входа в систему.
  3. window.gpsLat : это глобальная window.gpsLat содержащая значение Latitude полученное из geoLocation .
  4. window.gpsLng : это глобальная window.gpsLng содержащая значение Longitude полученное из geoLocation .
  5. window.gpsAcc : это глобальный var, содержащий значение Accuracy полученное из geoLocation .

Чего я хочу?

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

Solutions Collecting From Web of "Получить координаты из аппаратного GPS"

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

Как работает navigator.geolocation.getCurrentPosition() он использует самые точные данные, доступные в настоящее время. В случае мобильного устройства он сначала будет использовать GPS, если он включен, затем wi-fi.

Если встроенный GPS включен, javascript будет получать доступ к этим данным вместо данных wi-fi, но нет возможности предотвратить проверку данных wi-fi, если данные GPS недоступны.

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

Альтернативно, если вы создаете гибридное приложение, большинство фреймворков (PhoneGap .etc.) Имеют API для непосредственного запроса на устройство GPS. Используйте PhoneGap для проверки включенности GPS

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

Например, POSITION_UNAVAILABLE (2), если сеть не работает или спутники позиционирования не могут быть связаны. Но не уверен, что вам нужно справиться с некоторыми условиями!

Я предлагаю использовать watchPostion {я согласен с тем, что он предназначен для просмотра и непрерывного поиска позиции}, и вы можете сохранить его, и если GPS выкинет ошибку, вы можете запросить пользовательское оповещение, чтобы пользователь включил устройство GPS / wifi / internet .. и если Его приходят к успеху callback u может очистить часы.

  var watch =null; function success(position) { var lat = position.coords.latitude; var lon= position.coords.longitude; if (watch != null ) /*Need to take care .. as maybe there is no gps and user want it off so keep attempt 3 times or some kind a way out otherwise it will infinite loop */ { navigator.geolocation.clearWatch(watch); watch = null; } } function getLatLon() { var geolocOK = ("geolocation" in navigator); if ( geolocOK ) { var option = {enableHighAccuracy:true, maximumAge: 0,timeout:10000 }; watch = navigator.geolocation.watchPosition(success, fails, option); } else { //disable the current location? } } function fails() { alert("please turn on the GPS !"); } getLatLon();