Cordova 地理定位插件问题
Posted
技术标签:
【中文标题】Cordova 地理定位插件问题【英文标题】:Cordova geolocation plugin issue 【发布时间】:2017-05-12 13:43:13 【问题描述】:Cordova 地理定位插件仅适用于手机的 GPS 位置。如果手机 GPS 未锁定(例如在建筑物内),则应采用 COARSE_LOCATION,即 WIFI 或蜂窝塔。
我通过仅提供 ACCESS_COARSE_LOCATION 的权限并注释掉 ACCESS_FINE_LOCATION 的代码来检查它。在这种情况下,我们得到错误代码:3(超时)。
$scope.showpopup=function(status)
console.log("show pop up function called");
var cont;
switch (status)
case 1:
cont = "User denied the request for Geolocation."
break;
case 2:
cont = "Location information is unavailable."
break;
case 3:
cont = "The request to get user location timed out."
break;
default:
cont = "An unknown error occurred."
break;
$ionicPopup.alert(
title: 'Gps error',
content: cont
);
;
navigator.geolocation.getCurrentPosition(
function(position)
//Variables to use for showing latitude and longitude by position.coords .
,function(error)
$scope.showpopup(error.code);
,timeout:10000,maximumAge:60000,enableHighAccuracy:true);
【问题讨论】:
【参考方案1】:您将enableHighAccuracy
设置为true,表示您需要 GPS。将其更改为 false,然后您将能够获得基于网络(wifi 或蜂窝)的位置。
更多详情,请参见:
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-geolocation/
【讨论】:
谢谢@Neil Cresswell,我们会试试的。 抱歉,我觉得这很有趣,不要误会我必须纠正你的意思,@Neil Cresswell,但这并不完全正确。这个插件基于html5 geolocation api,它告诉“enableHighAccuracy 属性提供了应用程序希望获得最佳结果的提示”,所以你告诉 api 你想使用 gps/glonass/galileo/beidou 但那里不能保证坐标来自这些卫星地质技术,所以这个 api 也可以使用 wifi/gsm 等不太准确的技术。 正如引用的句子所说:如果在具体情况下可能,应用想要使用高精度技术,那么它将使用高精度技术,否则如果可以正确使用,它将自动使用不太准确的技术现在。当 enableHighAccuracy 设置为 true 时,也可以读取 here 高精度和低精度技术都允许在 android 中使用,这两种技术都可以使用取决于当前位置。 在设置了 ACCESS_FINE_LOCATION 时得出结论,则允许应用使用高准确度的技术。删除 ACCESS_FINE_LOCATION 或将 enableHighAccurcacy 设置为 false 不会对任何不太准确的技术产生任何影响。 您能做的最好的事情是将 enableHighAccuracy 设置为 true 并将 timeout 和 maximumAge 设置得尽可能高。这可以确保您充分利用所有地理技术(高精度和不太准确)并使用缓存坐标。你不能做更多,因为没有更多的参数。以上是关于Cordova 地理定位插件问题的主要内容,如果未能解决你的问题,请参考以下文章
cordova android 6.3.0 的相机和地理定位插件问题
如果 gps 暂时不可用,Cordova 地理定位插件无法正常工作
Cordova 地理定位插件在 android 设备上不起作用