在网站上通过Android的GPS提供商进行地理定位?

时间:2011-01-11 19:49:00

标签: android geolocation gps

我正在尝试在常规网站中获取移动设备的地理位置,而不是应用程序的webview或任何本地的。我正在获得一个位置,但它非常不准确,准确性可以追溯到3230或其他一些令人发指的数字。我假设它以米为单位,无论哪种方式都不够准确。相比之下,笔记本电脑上的同一网页的准确度为30-40。

我的第一个想法是它使用网络提供商而不是GPS提供商,告诉我我在哪里基于塔位置和范围。稍后我进行了一些研究,发现enableHighAccuracy并在我传递的选项中将其设置为true。在包括之后,我仍然没有注意到差异。

这是测试页面的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>

我正在使用运行Cyanogen 6.1稳定版,Android 2.2和GPS的支持MyTouch 3G上进行测试。如果root是一个问题,我也有各种各样的朋友和同事尝试在他们的非root 2.0+ Android设备上的网页。每部手机对准确性有不同的影响,但没有一个优于1000,我将其归因于不同的运营商。我没有(但最终会)使用iPhone或其他支持位置的手机进行测试。

0 个答案:

没有答案