3

您好我想知道是否可以在没有互联网连接的情况下捕获地理位置。假设我没有连接到网络,但我有我的 Gps,是吗

navigator.geolocation.getCurrentPosition(successCallback, errorCallback,
  {
    enableHighAccuracy : true,
    timeout : 10000, // 10s
    maximumAge : 0
  } 

在这种情况下工作

4

2 回答 2

1

当我开发我的 phonegap 应用程序(在 android 上)时,我发现使用 enableHighAccuracy 并不总是返回准确的位置,有时操作系统会返回大约 100 米精度的低精度位置,我假设使用网络三角测量或互联网连接以确定位置。

此外,如果您在应用程序运行时丢失 GPS 定位,操作系统有时会返回不准确的位置。AFAIK 无法判断返回到successCallback() 的位置是通过哪种方法获得的,但我通过检查返回到successCallback() 的响应对象中的精度值推断出这一点:我设置了50 米的最低要求精度;如果返回的位置不如这个准确,我会忽略它们。

试试这个测试用例,看看您的设备返回的准确度如何。由于 navigator.geolocation.getCurrentPosition() 只返回一次您的位置,所以我使用的是 navigator.geolocation.watchPosition()。希望这可以帮助!

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Geolocation test</title>

<script type="text/javascript" src="phonegap.js"></script>
<script type="text/javascript" src ="jquery-1.7.1.min.js"></script>

<script type="text/javascript" >    
    $(document).on("deviceready", function() {
        var minimumAccuracy = 50; // Minimum accuracy in metres to accept as a reliable position

        function successCallback(position){
            $('#error').html('');
            $('#lat').html(position.coords.latitude);
            $('#lon').html(position.coords.longitude);
            $('#accuracy').html(position.coords.accuracy);
            $('#accurate').html(position.coords.accuracy > minimumAccuracy ? "true" : "false");

        }

        function errorCallback(error){
            $('#lat').html(''); $('#lon').html(''); $('#accuracy').html(''); $('#accurate').html('');
            $('#error').html("Error while retrieving current position. <br/>Error code: " + error.code + "<br/>Message: " + error.message);
        }

        navigator.geolocation.watchPosition(successCallback, errorCallback, {
            enableHighAccuracy: true,
            timeout: 10000,
            maximumAge: 0

        });
    });

</script>
</head>
<body>
<p>Latitude: <span id="lat"></span></p>
<p>Longitude: <span id="lon"></span></p>
<p>Accuracy: <span id="accuracy"></span></p>
<p>Accurate?: <span id="accurate"></span></p>
<hr/>
<p>Error: <span id="error"></span></p>
</body>
</html>
于 2012-12-08T10:59:26.580 回答
1

对于 Android 应用程序,您可以使用可从http://www.offlinegeolocation.com下载的 Android 库- 它是免费的,但非常大(全球 240 MB,仅限英国 10 Mb)。它使用已知的蜂窝塔位置,并将其与检测到的附近蜂窝塔进行比较。它不如 GPS 或在线地理定位准确,但可能适合您作为故障转移的需求。

为了在 Phonegap 中使用它,需要将其转换为 Phonegap 插件。这里有一个很好的教程:http: //devgirl.org/2013/07/17/tutorial-how-to-write-a-phonegap-plugin-for-android/

于 2013-08-29T08:21:47.480 回答