Геолокация через Android-провайдер на сайте? - PullRequest
1 голос
/ 11 января 2011

Я пытаюсь получить геолокацию мобильного устройства на обычном веб-сайте, а не веб-просмотр приложения или чего-то подобного.Я получаю местоположение, но оно очень неточно, точность возвращается как 3230 или другое возмутительное число.Я предполагаю, что это в метрах, в любом случае это не совсем точно.Для сравнения, та же веб-страница на ноутбуке имеет точность 30-40.

Моя первая мысль была о том, что вместо поставщика GPS использовался сетевой провайдер, сообщавший мне, где я нахожусь в зависимости от местоположения башни идостичь.Небольшое исследование позже я нашел enableHighAccuracy и установил его в опциях, которые я передаю.После включения этого я все еще не замечаю никакой разницы.

Вот HTML / javascript тестовой страницы:

<html>
  <head>
    <script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
    <script type="text/javascript">
      function OnLoad() {
        $("#Status").text("Init");
        if (navigator.geolocation) {
          $("#Status").text("Supports Geolocation");
          navigator.geolocation.getCurrentPosition(HandleLocation, LocationError, { enableHighAccuracy: true });
            $("#Status").text("Sent position request...");
          } else {
            $("#Status").text("Doesn't support geolocation");
        }
      }

      function HandleLocation(position) {
        $("#Status").text("Received response:");
        $("#Position").text("(" + position.coords.latitude + ", " + position.coords.longitude + ") accuracy: " + position.coords.accuracy);
        var loc = new Microsoft.Maps.Location(position.coords.latitude, position.coords.longitude);
        GetMap(loc);
      }

      function LocationError(error) {
        switch(error.code) {
          case error.PERMISSION_DENIED:
            alert("Location not provided");
            break;
          case error.POSITION_UNAVAILABLE:
            alert("Current location not available");
            break;
          case error.TIMEOUT:
            alert("Timeout");
            break;
          default:
            alert("unknown error");
            break;
        }
      }

      function GetMap(loc)  {
        var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials: "Aj59meaCR1e7rNgkfQy7j08Pd3mzfP1r04hGesGmLe2a3ZwZ3iGecwPX2SNPWq5a", center: loc, mapTypeId: Microsoft.Maps.MapTypeId.road, zoom: 15});
      }

    </script>
  </head>
  <body onload="javascript:OnLoad()">
    <div id="Status"></div>
    <div id="Position"></div><br/>
    <div id='mapDiv' style="position:relative; width:600px; height:400px;"></div>
  </body>
</html>

Я тестирую это на рутированном MyTouch 3G под управлением Cyanogen 6.1 stable, Android 2.2и GPS включен.В случае, если у вас возникли проблемы с рутированием, у меня также было несколько друзей и коллег, которые пробовали веб-страницу на своих не рутированных устройствах Android версии 2.0+.Каждый телефон имел различные эффекты на точность, но ни один не был лучше, чем 1000, я приписываю это различным операторам связи.Я не тестировал (но в конечном итоге буду) iPhone или другие мобильные телефоны с поддержкой определения местоположения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...