地理位置继续在可穿戴应用中返回 'POSITION_UNAVAILABLE'
geolocation continuely returning 'POSITION_UNAVAILABLE' in wearable app
我一直在尝试获得一个显示地理坐标和速度的简单网络应用程序,但我每次都收到 'POSITION_UNAVAILABLE' 错误。
我在 config.xml 文件中添加了以下权限;
<feature name="http://tizen.org/feature/feedback.vibration"/>
<feature name="http://tizen.org/feature/location"/>
<tizen:privilege name="http://tizen.org/privilege/location"/>
<tizen:privilege name="http://tizen.org/privilege/power"/>
<tizen:profile name="wearable"/>
<tizen:setting hwkey-event="enable"/>
<tizen:setting background-support="enable"/>
并且在HTML页面
<html>
<head>
<meta name="viewport" content="width=device-width,user-scalable=no">
<title>List</title>
<link rel="stylesheet" href="lib/tau/wearable/theme/default/tau.min.css">
<link rel="stylesheet" media="all and (-tizen-geometric-shape: circle)" href="lib/tau/wearable/theme/default/tau.circle.min.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="ui-page ui-page-active" id="speedPage">
<header>
<h2 class="ui-title">Boat speed</h2>
</header>
<div class="ui-content">
<li><p id="speedOutput"></p></li>
<li><p id="latitude"></p></li>
<li><p id="longitude"></p></li
<script>
var options = {enableHighAccuracy: true, timeout: 50000, maximumAge: 5000};
function success(position) {
currentGpsPosLat = position.coords.latitude;
currentGpsPosLong = position.coords.longitude;
currentGPSPosLong = position.coords.speed;
document.getElementById("latitude").innerHTML = currentGpsPosLat;
document.getElementById("longitude").innerHTML = currentGpsPosLong;
}
function error(error) {
document.getElementById("speedOutput").innerHTML = error;
document.getElementById("latitude").innerHTML = error.code;
}
navigator.geolocation.getCurrentPosition(success, error, options);
</script>
</div>
</div>
<script src="lib/tau/wearable/js/tau.min.js"></script>
<script src="js/circle-helper.js"></script>
<script src="js/app.js"></script>
<script src="js/lowBatteryCheck.js"></script>
</body>
</html>
我得到的输出是
[对象位置错误]
2
我查了一下错误代码,是POSITION_UNAVAILABLE。我也试过
navigator.geolocation.watchPosition(success, error, options);
但是我仍然得到相同的结果。
我已通过同时使用 Here WeGo 和 Speedometer 应用验证手表正在获取位置信号。
如有任何帮助,我们将不胜感激。
我不确定您使用的是哪种设备,但在我看来这是自 Tizen 4.0 以来就存在的权限限制问题 - https://developer.tizen.org/development/guides/web-application/security/privacy-related-permissions
'location'涉及隐私,需要用户额外明确同意。您可以使用 Web API PPM 模块执行此操作 - https://developer.tizen.org/dev-guide/5.0.0/org.tizen.web.apireference/html/device_api/mobile/tizen/ppm.html
检查用户权限的当前状态:
> tizen.ppm.checkPermission("http://tizen.org/privilege/location")
< "PPM_ASK"
PPM_ASK 表示您在 config.xml 中正确授予了权限,但还需要直接向用户请求。
> tizen.ppm.requestPermission("http://tizen.org/privilege/location", (s) => {console.log("success")}, (e) => {console.log("error " + JSON.stringify(e))})
在手表上,将显示弹出窗口。然后用户可以授予权限。
检查结果应该如下:
> tizen.ppm.checkPermission("http://tizen.org/privilege/location")
< "PPM_ALLOW"
您的位置相关代码应该可以使用(如果您的设备没有 GPS 模块,您需要将手表与手机配对才能正确收集位置)。
我一直在尝试获得一个显示地理坐标和速度的简单网络应用程序,但我每次都收到 'POSITION_UNAVAILABLE' 错误。
我在 config.xml 文件中添加了以下权限;
<feature name="http://tizen.org/feature/feedback.vibration"/>
<feature name="http://tizen.org/feature/location"/>
<tizen:privilege name="http://tizen.org/privilege/location"/>
<tizen:privilege name="http://tizen.org/privilege/power"/>
<tizen:profile name="wearable"/>
<tizen:setting hwkey-event="enable"/>
<tizen:setting background-support="enable"/>
并且在HTML页面
<html>
<head>
<meta name="viewport" content="width=device-width,user-scalable=no">
<title>List</title>
<link rel="stylesheet" href="lib/tau/wearable/theme/default/tau.min.css">
<link rel="stylesheet" media="all and (-tizen-geometric-shape: circle)" href="lib/tau/wearable/theme/default/tau.circle.min.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="ui-page ui-page-active" id="speedPage">
<header>
<h2 class="ui-title">Boat speed</h2>
</header>
<div class="ui-content">
<li><p id="speedOutput"></p></li>
<li><p id="latitude"></p></li>
<li><p id="longitude"></p></li
<script>
var options = {enableHighAccuracy: true, timeout: 50000, maximumAge: 5000};
function success(position) {
currentGpsPosLat = position.coords.latitude;
currentGpsPosLong = position.coords.longitude;
currentGPSPosLong = position.coords.speed;
document.getElementById("latitude").innerHTML = currentGpsPosLat;
document.getElementById("longitude").innerHTML = currentGpsPosLong;
}
function error(error) {
document.getElementById("speedOutput").innerHTML = error;
document.getElementById("latitude").innerHTML = error.code;
}
navigator.geolocation.getCurrentPosition(success, error, options);
</script>
</div>
</div>
<script src="lib/tau/wearable/js/tau.min.js"></script>
<script src="js/circle-helper.js"></script>
<script src="js/app.js"></script>
<script src="js/lowBatteryCheck.js"></script>
</body>
</html>
我得到的输出是
[对象位置错误] 2
我查了一下错误代码,是POSITION_UNAVAILABLE。我也试过
navigator.geolocation.watchPosition(success, error, options);
但是我仍然得到相同的结果。
我已通过同时使用 Here WeGo 和 Speedometer 应用验证手表正在获取位置信号。
如有任何帮助,我们将不胜感激。
我不确定您使用的是哪种设备,但在我看来这是自 Tizen 4.0 以来就存在的权限限制问题 - https://developer.tizen.org/development/guides/web-application/security/privacy-related-permissions
'location'涉及隐私,需要用户额外明确同意。您可以使用 Web API PPM 模块执行此操作 - https://developer.tizen.org/dev-guide/5.0.0/org.tizen.web.apireference/html/device_api/mobile/tizen/ppm.html
检查用户权限的当前状态:
> tizen.ppm.checkPermission("http://tizen.org/privilege/location")
< "PPM_ASK"
PPM_ASK 表示您在 config.xml 中正确授予了权限,但还需要直接向用户请求。
> tizen.ppm.requestPermission("http://tizen.org/privilege/location", (s) => {console.log("success")}, (e) => {console.log("error " + JSON.stringify(e))})
在手表上,将显示弹出窗口。然后用户可以授予权限。 检查结果应该如下:
> tizen.ppm.checkPermission("http://tizen.org/privilege/location")
< "PPM_ALLOW"
您的位置相关代码应该可以使用(如果您的设备没有 GPS 模块,您需要将手表与手机配对才能正确收集位置)。