科尔多瓦/Phonegap 地理位置

Posted

技术标签:

【中文标题】科尔多瓦/Phonegap 地理位置【英文标题】:Cordova/Phonegap Geolocation 【发布时间】:2015-07-01 16:09:32 【问题描述】:

我正在编写一个 Cordova/Phonegap 应用程序,我想使用 Geolocation 插件来获取经度和纬度。这是我的代码:

$scope.showCoord = function() 
        var onSuccess = function(position) 
            console.log("Latitude: "+position.coords.latitude);
            console.log("Longitude: "+position.coords.longitude);
        ;

        function onError(error) 
            console.log("Code: "+error.code);
            console.log("Message: "+error.message);
        ;

        navigator.geolocation.getCurrentPosition(onSuccess, onError,  maximumAge: 3000, timeout: 5000, enableHighAccuracy: true );
    

当我用 GPS 尝试这个插件时,它工作得很好,但是当我在没有 GPS 的情况下尝试它时,我收到超时...我将超时更改为 100000 但不起作用。此外,在我的 config.xml 中,我添加了以下代码:

<feature name="Geolocation">
        <param name="android-package" value="org.apache.cordova.GeoBroker" />
    </feature>

我该如何解决?

【问题讨论】:

【参考方案1】:

更新:根据您在下面的评论,我重写了我的答案

当您设置enableHighAccuracy: true 时,应用程序对操作系统说“给我一个来自 GPS 硬件的高精度位置”。如果在操作系统设置中启用了 GPS,则 GPS 硬件可用,因此请求高精度位置将导致操作系统使用 GPS 硬件来检索高精度位置。但是,如果在操作系统设置中禁用了 GPS,则操作系统无法提供您的应用请求的高精度位置,因此会出现错误回调。

如果您设置enableHighAccuracy: false,则应用程序对操作系统说“给我一个精确的位置”,因此操作系统将使用单元三角测量/Wifi(或 GPS,如果它当前被另一个应用程序激活)返回一个位置)。

因此,为了同时满足高精度和低精度的位置,您可以先尝试高精度位置,如果失败,则请求低精度位置。例如:

var maxAge = 3000, timeout = 5000;

var onSuccess = function(position) 
    console.log("Latitude: "+position.coords.latitude);
    console.log("Longitude: "+position.coords.longitude);
;

function onError(error) 
    console.log("Code: "+error.code);
    console.log("Message: "+error.message);
;

navigator.geolocation.getCurrentPosition(onSuccess, function(error) 
    console.log("Failed to retrieve high accuracy position - trying to retrieve low accuracy");
    navigator.geolocation.getCurrentPosition(onSuccess, onError,  maximumAge: maxAge, timeout: timeout, enableHighAccuracy: false );
,  maximumAge: maxAge, timeout: timeout, enableHighAccuracy: true );

【讨论】:

对不起,我想在 GPS 处于活动状态时获取它,而当它关闭时,我想从网络接收坐标 它对我不起作用...如果我将超时设置为 1 分钟,我总是会超时...我正在我的 android 设备上进行测试 此外,如果我关闭连接,当我必须收到 POSITION_UNAVAILABLE 时,我会收到超时 如何在没有 GPS 的情况下测试场景?在 Android 4 中,Location mode High Accuracy 将 GPS+Wifi+Cell 定位;使用 Wifi+Cell 位置节省电池电量 我在我的设备上安装了我的应用程序,并在我的浏览器上安装了它,因此我可以关闭或打开我的 gps、wifi 但无法正常工作

以上是关于科尔多瓦/Phonegap 地理位置的主要内容,如果未能解决你的问题,请参考以下文章

科尔多瓦的地理位置

设置请求地理位置科尔多瓦

地理位置科尔多瓦应用程序中的位置半径

科尔多瓦应用程序中的地理位置总是超时

Phonegap 科尔多瓦 2.3.0 phonegap-facebook-plugin

科尔多瓦地理定位不会立即观看或获取当前位置