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 地理定位插件有时不工作

cordova android 6.3.0 的相机和地理定位插件问题

如果 gps 暂时不可用,Cordova 地理定位插件无法正常工作

Cordova 地理定位插件在 android 设备上不起作用

Cordova 地理定位插件无法从 Android 的 GPS 获取位置

ng-cordova 地理定位插件在通知栏中不显示 GPS 图标