геолокация JavaScript на андроиде не работает

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

function initialize() {
   if(window.google && google.gears) {
        var geo = google.gears.factory.create('beta.geolocation');
        geo.getCurrentPosition(useLocation, errorOnLocate);
   }
   else if(navigator.geolocation) {
       navigator.geolocation.getCurrentPosition(useLocation, errorOnLocate);
   }
   else {
       alert("no geo found");
   }
}

function errorOnLocate(message)
{
    alert(message);
    zoomTo(-34.397, 150.644);
}

Это всегда перестало работать с [возражают PositionError] в к функции errorOnLocate, даже если я переключаю порядок метода геолокации.

Это находится на HTC Hero с андроидом 2.1 с помощью любого браузера, встроен. Мой gps работает, и я дал браузеру команду позволять веб-сайтам просматривать мое местоположение. Функция "местоположения" на Google отображает исходное приложение, которое появляется, по телефону берет мое местоположение очень хорошо

Далее больше, если я посещу свой сайт с помощью FireFox 3.5 на моем персональном компьютере, то он найдет мое местоположение правильно. (Я полагаю, что это использует комбинацию IP и точек данных AP). Так или иначе это использует тот же JavaScript.

Править: Это - html/js в браузере, не исходное приложение. Также точное сообщение об ошибке является 'Последним поставщиком местоположения, был отключен'

9
задан Dan.StackOverflow 30 July 2010 в 01:52
поделиться

1 ответ

Доступ к этому осуществляется из WebView или из приложения Android Browser? Если из WebView, вам может потребоваться включить геолокацию с помощью вызова Java. Об этом см. справку WebView.

В противном случае, я не уверен, что именно не так с вашим JS, но вот HTML+JS, который, как я знаю, работает с браузером Android:

<!DOCTYPE html> 
<html> 
<head> 
  <script type="text/javascript"> 
function watchLocation(successCallback, errorCallback) {
  successCallback = successCallback || function(){};
  errorCallback = errorCallback || function(){};

  // Try HTML5-spec geolocation.
  var geolocation = navigator.geolocation;

  if (geolocation) {
    // We have a real geolocation service.
    try {
      function handleSuccess(position) {
        successCallback(position.coords);
      }

      geolocation.watchPosition(handleSuccess, errorCallback, {
        enableHighAccuracy: true,
        maximumAge: 5000 // 5 sec.
      });
    } catch (err) {
      errorCallback();
    }
  } else {
    errorCallback();
  }
}

function init() {
  watchLocation(function(coords) {
    document.getElementById('test').innerHTML = 'coords: ' + coords.latitude + ',' + coords.longitude;
  }, function() {
    document.getElementById('test').innerHTML = 'error';
  });
}
  </script> 
</head> 

<body onload="init()"> 
  <div id="test">Loading...</div> 
</body> 
</html>
12
ответ дан 4 December 2019 в 15:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: