您好我想知道是否可以在没有互联网连接的情况下捕获地理位置。假设我没有连接到网络,但我有我的 Gps,是吗
navigator.geolocation.getCurrentPosition(successCallback, errorCallback,
{
enableHighAccuracy : true,
timeout : 10000, // 10s
maximumAge : 0
}
在这种情况下工作
您好我想知道是否可以在没有互联网连接的情况下捕获地理位置。假设我没有连接到网络,但我有我的 Gps,是吗
navigator.geolocation.getCurrentPosition(successCallback, errorCallback,
{
enableHighAccuracy : true,
timeout : 10000, // 10s
maximumAge : 0
}
在这种情况下工作
当我开发我的 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>
对于 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/