Я пытаюсь использовать Geolocation с API HTML5 на устройствах Android. Я провел тесты с Galaxy S LC (эквивалент Galaxy S1). Версия Android 2.2.1.Использование HTML5 Geolocation API с Android 2.0+ Browser
Я прочитал много тем, но я до сих пор не нашел решения.
Я использую этот типичный код для Geolocating:
`
<script type="text/javascript">
document.write("Trying to locate you");
if(navigator.geolocation){
document.write("Geolocation is supported");
navigator.geolocation.getCurrentPosition(successCallback, errorCallback,
{
enableHighAccuracy : true,
timeout : 10000, // 10s
maximumAge : 0
}
);
function successCallback(position){
document.write("You have been located. Latitude :" + position.coords.latitude +", longitude : " + position.coords.longitude);
};
function errorCallback(error){
document.write("It didn't work");
switch(error.code){
case error.PERMISSION_DENIED:
document.write("Permission denied");
break;
case error.POSITION_UNAVAILABLE:
document.write("Position unavailable");
break;
case error.TIMEOUT:
document.write("Timeout");
break;
case error.UNKNOW_ERROR:
document.write("Unknown error");
break;
}
}
}
else{
document.write("La géolocalisation n'est pas supportée par le navigateur");
}
</script>
Он хорошо работает на компьютере с Chrome и Opera (но не с Firefox). Он также работает с Opera на мобильном устройстве. Но он не работает с браузером Android. Его версия 2.2.1. Это то, что происходит на этом: 1. Появляются следующие сообщения: «Пытается найти вас» «Геолокация поддерживается» 2. По истечении времени, указанного таймаутом (здесь 10 секунд) отображается пустая страница. Функции sucessCallback или errorCallback не вызываются.
Когда я не указываю таймаут (timeout = бесконечность), он работает, если включен GPS. Если это не так, я также получаю пустую страницу без сообщений об ошибках.
Я пробовал этот тест HTML5 Geolocation в Android-браузере: http://html5demos.com/geo, и он также не работает.
Я пробовал this code (1-й ответ). Это работает иногда, но мы должны подождать 2 минуты, чтобы получить позицию (как сказано в комментариях).
Я также попытался получить его через Webview с all the specifications needed, но он делает то же самое.
Here Говорят, что для устранения этой ошибки в браузере Android нам просто нужно указать enableHighAccuracy на true, но если GPS не активирован, все еще не будет вызвана функция (sucessCallback или errorCallback).
Если у кого-то есть решение, это будет большой помощью для меня.
Благодарим за помощь.
Фактически пустая страница была вызвана функцией «document.write». Я заменил его на innerHTML, и теперь он работает. Это означает, что отображаются ошибки, вызывается errorCallback.
Теперь проблема заключается в том, что браузер Android может определять положение только с помощью GPS (HighAccuracy). Если GPS не включен или если он не может выбрать позицию (например, внутри здания), он не вернет позицию. Напротив, браузер Opera использует сеть ретрансляции (метод Cell-ID) для определения позиции (в этом случае точность составляет менее 150 м).
Знаете ли вы, как заставить браузер Android использовать источник сотовой ячейки?
Проверьте это сообщение и его решения. http://stackoverflow.com/questions/11280946/unable-to-get-gps-coordinates-using-javascript-on-browser-in-android/11298468#11298468 – axs