Подтвердить что ты не робот

Navigator.geolocation.getCurrentPosition не работает на android google chrome

Этот код:

navigator.geolocation.getCurrentPosition(
                    function(position) {
                        alert(position.coords.latitude, position.coords.longitude);
                    },
                    function(error){
                        alert(error.message);
                    }, {
                        enableHighAccuracy: true
                        ,timeout : 5000
                    }
            );

https://jsfiddle.net/FcRpM/ работает в Google Chrome на моем ноутбуке, но на мобильном HTC one S (Android 4.1, GPS выключен, местоположение через мобильные сети и Wi-Fi включен), подключен к Интернету через WiFi.

  1. Браузер по умолчанию работает нормально.
  2. Google Chrome, Opera, Яндекс.Браузер для Android не работает с "Timeout expired".

другие приложения для Android находит меня правильно.

4b9b3361

Ответ 1

Вы можете попробовать это. Он работает на моем устройстве (Samsung Galaxy Nexus работает с Chrome 27.0.1453.90 на Wi-Fi (без подключения к данным, GPS не включен))

navigator.geolocation.getCurrentPosition(
    function(position) {
         alert("Lat: " + position.coords.latitude + "\nLon: " + position.coords.longitude);
    },
    function(error){
         alert(error.message);
    }, {
         enableHighAccuracy: true
              ,timeout : 5000
    }
);

Проблема заключается в том, что предупреждение принимает только строки (в оригинальной форме), однако вы пропускаете 2 удвоения. Измените поле предупреждения, например, на alert('Hey', 'Hello');, и вывод будет только Hey. Измените , на +, и вы получите конкатенированные строки HeyHello. Вы не можете использовать знак + внутри alert, поскольку уравнение будет сначала выполнено, а затем отображено.

Надеюсь, это даст понять.

Ответ 2

ТРЕБУЕМАЯ РАБОТА: для вызова watchPosition и обертывания этого в течение 5 секунд перед очисткой watchID. Код ниже;

var options = { enableHighAccuracy: true, maximumAge: 100, timeout: 60000 };
if( navigator.geolocation) {
   var watchID = navigator.geolocation.watchPosition( gotPos, gotErr, options );
   var timeout = setTimeout( function() { navigator.geolocation.clearWatch( watchID ); }, 5000 );
} else {
   gotErr();
}

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

Ответ 3

Только что закончил тестирование кучи мобильных устройств и Javascript Geolocation. Я использовал код примера от Google, чтобы убедиться, что проблема не в моем собственном коде.

Chrome для Android 4.4, похоже, не работает с службами определения местоположения только с GPS, и браузер 2.3 не работает. Они оба нуждаются в "высокой точности" - использовании беспроводных сетей и сетей 3G/4G.

Самое забавное, что Firefox для Android работает без каких-либо проблем только с GPS. Только браузер Android Android (Chrome + Mobile Safari) не работает с настройками местоположения только с GPS.

И остальная часть банды - Lumia WP8 с GPS, Windows и Linux (оба с ADSL) отлично работали с любыми настройками местоположения.

Ответ 4

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

Ответ 5

Ну, вчера я столкнулся с этой проблемой, и проблема была в том, что Geolocation API можно использовать только через HTTPS. Он будет работать на http://localhost но для других устройств вам необходимо иметь безопасное соединение.

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

Ответ 6

У меня это работало на каждом симуляторе, но не на устройствах с Android

у меня сработало

navigator.geolocation.getCurrentPosition(
                (position) => {
                    console.log(position);
                },
                (error) => console.log(new Date(), error),
                { enableHighAccuracy: false, timeout: 5000},
            );

означает, что вместо трех аргументов я использовал только два средства

{ enableHighAccuracy: false, timeout: 5000}

Ответ 7

просто добавьте

"геолокация",
"Место"

под разрешениями. Работал для меня.: -)