如果定位服务关闭,英特尔 XDK 地理位置将找不到纬度/经度
Intel XDK Geolocation won't find Lat/Long if location services off
我正在使用英特尔XDK开发一款应用程序,专门使用Android(Nexus 6P)进行测试。
我已经添加了科尔多瓦地理位置插件以及科尔多瓦的谷歌定位服务,并在打开我的位置服务的情况下进行了测试,它正确地获得了两个插件的位置。
但是,当我关闭定位服务时,什么都没有出现。
这是我当前用于获取位置的代码:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
var Geo={};
if (navigator.geolocation) {
console.log('Started location');
console.log(cordova.plugins.locationServices.geolocation.getCurrentPosition(success, error));
//navigator.geolocation.getCurrentPosition(success, error, {enableHighAccuracy:true, maximumAge:Infinity, timeout:100000});
}
//Get the latitude and the longitude;
function success(position) {
console.log('SUCCESS location');
Geo.lat = position.coords.latitude;
Geo.lng = position.coords.longitude;
populateHeader(Geo.lat, Geo.lng);
}
function error(){
console.log("Geocoder failed");
}
function populateHeader(lat, lng){
$('#Lat').attr('data-lat', lat);
$('#Long').attr('data-long',lng);
}
}
我所追求的,要么是要求用户打开位置数据的一种方式,要么更好的是在不需要位置服务的情况下获取用户的位置。
您说"当我关闭位置服务时",我假设您的意思是您已进入Android设置并禁用了"位置历史记录"或关闭了设备上的共享"位置"。在这种情况下,您不会获得任何数据,因为用户已选择不共享该信息。请参阅两个插件的自述文件中的警告,这被认为是非常敏感的数据,因此,Android 为用户提供了控制共享此信息的能力。
我不知道是否有一个 API 可以明确告诉您用户是否已禁用该数据。无论如何,您可能应该报告您无法获得所需的数据,这可能是由于各种原因:
- 用户已禁用位置数据的共享
- 设备此时无法检索当前位置
- 当前的"定位模式"不允许检索位置
然后跟进一些关于更改或修复的建议,以便收集和使用这些数据。当然,如果用户对与您的应用共享该信息不感兴趣,则必须优雅地遵守。
编辑2017年2月23日:请参阅下面的评论,以获取一些插件的参考,这些插件可以帮助确定位置服务是否可用。
您必须传递"选项"来确定"超时"的时间,因此返回错误! =)
function cbSucessGeo(p)
{
console.log(p); //current GPS coordinates
}
function cbFailGeo(e)
{
switch(e.code)
{
case 1:
alert("PERMISSION DENIED");
break;
case 2:
alert("POSITION_UNAVAILABLE");
break;
case 3:
alert("TIMEOUT");
break;
default:
alert("UNKNOWN ERROR");
break;
}
}
var options = { timeout: 5000, maximumAge: 0, enableHighAccuracy: true };
navigator.geolocation.getCurrentPosition(cbSucessGeo, cbFailGeo, options);
如果关闭 GPS,则会在超时间隔(如果指定)后调用 onError 回调。如果未指定超时参数,则不调用回调。
和平! =)
相关文章:
- 气质的“nestRemoting()”有时可以'找不到关系
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 找不到模块捆绑包
- for循环中的javascript if语句找不到==
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- [Vue warn]:找不到元素
- ngRoute找不到模板
- 未能加载,因为找不到支持的源.当播放HTML5音频元素时
- 我发现了一些只在移动设备上可见的垃圾邮件链接,我可以'找不到包含此垃圾邮件链接的脚本的位置
- 在页面中找不到元素的正确位置.函数未考虑填充
- 为什么浏览器可以'在`.中找不到js文件/lib/`(相对)位置
- asp:XmlDataSource找不到预期的DTD标记.第1行,位置3
- 与谷歌地图网站不同,谷歌地图地理编码器找不到不是确切地址的地点
- 如果定位服务关闭,英特尔 XDK 地理位置将找不到纬度/经度
- JS-Can'找不到用户位置
- 谷歌地图,地理编码,javascript:when-don'找不到地址,把记号笔放在中间
- 找不到一个字母在字符串中的位置
- 可以'找不到地理编码的兴趣点