Использование API геолокации HTML5 с браузером Android 2.0+Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Использование API геолокации HTML5 с браузером Android 2.0+

Сообщение Anonymous »

Я пытаюсь использовать геолокацию с API HTML5 на устройствах Android. Я проводил тесты на Galaxy S LC (эквивалент Galaxy S1). Версия Android — 2.2.1.

Я прочитал много тем об этом, но так и не нашел решения.

Я использую этот типичный код для геолокации:

`

Код: Выделить всё


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");
}


Он хорошо работает на ПК с Chrome и Opera (но не с Firefox). Он также работает с Opera на мобильном устройстве. Но это не работает с браузером Android. Его версия — 2.2.1.
Вот что происходит с этим:
1. Появятся следующие сообщения:
"Пытаюсь вас найти"
"Геолокация поддерживается"
2. По истечении времени, указанного в таймауте (здесь 10 секунд), отображается пустая страница.
Функции sucessCallback или errorCallback не вызываются.

Когда я не указываю таймаут (таймаут = бесконечность), он работает, если включен GPS. Если это не так, я также получаю пустую страницу без сообщений об ошибках.

Я попробовал этот тест геолокации HTML5 в браузере Android: http://html5demos.com/geo, и он также не работает.

Я попробовал этот код (1-й ответ). Иногда это работает, но нам приходится ждать 2 минуты, чтобы получить позицию (как сказано в комментариях).

Я также пытался получить ее через веб-просмотр со всеми необходимыми спецификациями, но он делает то же самое.

Здесь говорится, что для устранения этой ошибки в браузере Android нам просто нужно указать для параметра EnableHighAccuracy значение true, но если GPS не активирован, функция по-прежнему не работает. (sucessCallback или errorCallback).

Если у кого-то есть решение, это будет для меня большой помощью.

Спасибо за вашу помощь.



На самом деле пустая страница была вызвана функцией «document.write». Я заменил его на внутренний HTML, и теперь он работает. Это означает, что отображаются ошибки, вызывается errorCallback.

Теперь проблема в том, что Android-браузер может определять положение только с помощью GPS (HighAccuracy). Если GPS не включен или он не может определить местоположение (например, внутри здания), он не вернет местоположение.
Напротив, браузер Opera будет использовать ретрансляционную сеть (метод Cell-ID) для определения местоположения (в этом случае точность составляет менее 150 м).

Знаете ли вы, как заставить браузер Android использовать источник Cell-ID?

Подробнее здесь: https://stackoverflow.com/questions/103 ... -0-browser
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»