【问题标题】:Cordova geolocation plugin issueCordova 地理定位插件问题
【发布时间】: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});

【问题讨论】:

    标签: cordova ionic-framework geolocation cordova-plugins android-gps


    【解决方案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 设置得尽可能高。这可以确保您充分利用所有地理技术(高精度和不太准确)并使用缓存坐标。你不能做更多,因为没有更多的参数。
    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 2023-03-04
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多