Cordova Geolocation 返回 NAN 的纬度和经度

Posted

技术标签:

【中文标题】Cordova Geolocation 返回 NAN 的纬度和经度【英文标题】:Cordova Geolocation returning NAN for latitude and longitude 【发布时间】:2016-08-03 19:19:30 【问题描述】:

所以我是 javascript 和 Cordova 的新手,我正在尝试在 Visual Studio 2015 中创建一个简单的 GPS 应用程序,当我单击“当前位置”时,它只会获取我的当前位置。

当我在 Firefox 中测试它时它可以工作,但当我尝试在我的本地机器或远程机器上运行它时却不行。 (我正在使用 Windows 10 并在 Panasonic FZ-M1 Toughpad 上进行测试。当我在本地/远程机器上运行它时,经纬度在大约 30 秒后返回 NAN。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <link rel="stylesheet" type="text/css" href="css/index.css">
    <script src="http://maps.google.com/maps/api/js?sensor=true"></script>
    <title>gpsCordova</title>
</head>
<body>
    <div class="app">
        <h1>Apache Cordova</h1>
        <div id="deviceready" class="blink">
            <p class="event listening">Connecting to Device</p>
            <p class="event received">Device is Ready</p>
        </div>
    </div>
    <h2>Touch Me.</h2>
    <button id="locationButton">CURRENT LOCATION</button><br>
    <p id="Geolocation"></p>

    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="scripts/platformOverrides.js"></script>
    <script type="text/javascript" src="scripts/main.js"></script>

</body>

document.getElementById("locationButton").addEventListener("click", getLocation);

var geoLoc = document.getElementById("Geolocation");
var geolocationOptions = 
enableHighAccuracy: true,
maximumAge: 3600000


function getLocation() 
navigator.geolocation.getCurrentPosition(geolocationSuccess, geolocationError, geolocationOptions);


function geolocationSuccess(position) 

geoLoc.innerHTML ="Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude +
"<br>Accuracy: " + position.coords.accuracy +
"<br>Altitude: " + position.coords.altitude +
"<br>Altitude Accuracy: " + position.coords.altitudeAccuracy +
"<br>Heading: " + position.coords.heading +
"<br>Speed: " + position.coords.speed +
"<br>Timestamp: " + position.coords.timestamp + "<br>";



function geolocationError(error) 
geoLoc.innerHTML = "Failure" +
   "<br>error: " + error.name +
   "<br>message: " + error.message;
    

我不确定还有什么要补充的,但是有没有人对这个问题有任何经验?还是我的代码中缺少某些内容?

感谢您的帮助。

【问题讨论】:

您是否检查了测试设备是否启用了地理定位以及该应用是否具有来自操作系统的正确地理定位权限? 是的,设备已启用地理定位。我不确定您所说的应用程序是否具有来自操作系统的正确地理位置权限,但在设备设置下,该应用程序的位置权限已打开。当我运行应用程序时,当它提示我分享位置时,我选择是。 嗨 @mmm121 在 ios 下,每个应用程序都需要确认使用地理定位,android v5 及更高版本也是如此。我的意思是您是否仔细检查了此权限是否实际授予应用程序(如果适用)。否则,您的代码看起来不错,并且与我过去成功使用 Cordova 的代码相似。 是的,地理位置已在应用程序下确认。我使用的是 Windows 10 平板电脑,我不知道这是否会有所不同。 @mmm121 你是怎么解决这个问题的? 【参考方案1】:

此插件提供的功能在 deviceready 事件之后才可用。

https://github.com/apache/cordova-plugin-geolocation

【讨论】:

以上是关于Cordova Geolocation 返回 NAN 的纬度和经度的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 插件 Geolocation 不适用于 Android 版本 Kitkat

navigator.geolocation.watchPosition 以速度返回 NaN

使用 cordova-plugin-geolocation 时设置 NSLocationWhenInUseUsageDescription 值

Cordova 多个 navigator.geolocation.getCurrentPosition()?

Cordova Geolocation有时会工作,有时则不工作

PhoneGap/Cordova 将 GeoLocation 从 localStorage vars 推送到 MySQL