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.
- Браузер по умолчанию работает нормально.
- Google Chrome, Opera, Яндекс.Браузер для Android не работает с "Timeout expired".
другие приложения для Android находит меня правильно.
Ответы
Ответ 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
просто добавьте
"геолокация",
"Место"
под разрешениями. Работал для меня.: -)