在Cordova / Phonegap中仅使用GPS获取当前位置

时间:2014-07-18 09:06:44

标签: html5 cordova

我使用Cordova 3.5中的地理定位插件。我的编码如下:

navigator.geolocation.getCurrentPosition(function(pos) {
    var lat = pos.coords.latitude;
    var lng = pos.coords.longitude;
    alert("lat : "+lat+" lng : " +lng");
});

我正在徘徊这个代码是否可以在没有Internet连接和GPS的情况下获得lat lng。如果没有,有没有解决办法呢?谢谢您帮忙。

3 个答案:

答案 0 :(得分:2)

正如@jcesarmobile在此指出Cordova geolocation plugin not getting location from GPS for Android

  

他们正在使用HTML5地理位置实现而不是本机   码。他们删除了版本0.3.7的android java代码   插件

{{1}}

希望这有帮助

答案 1 :(得分:1)

如果没有互联网连接,仍然会有Cell ID,您连接的设备的RFID和MAC地址等来源(例如WIFI路由器,蓝牙)

代码应该可以工作,但是你可以添加一些东西(Eventlistener和错误提醒,以防无法找到位置):

document.addEventListener("deviceready", onDeviceReady, false);
        function onDeviceReady() {
            navigator.geolocation.getCurrentPosition(onSuccess, onError);
        }

    function onSuccess(pos) {
            var lat = pos.coords.latitude;
            var lng = pos.coords.longitude;
            alert("lat : " + lat + " lng : " + lng);

        }

    function onError(error) {
            alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
        }

我知道,例如Google位置API使用缓存来获取最新的已知位置,可以随时读取。 我不确定科尔多瓦是否也使用类似的东西,但它可能是。

答案 2 :(得分:1)

检查地理位置是否已正确安装

重新启动手机(愚蠢的解决方案,但有时会有效。我曾经面对过一次)

检查您的地理位置权限&设备

中的设置已打开

使用此代码进行测试

$('#test').append('<a href="#" onclick="tests(randomString(5,'+item.id+'))"><img src="http://www.test.com/images/'+item.image+'"/></a>');

如果您正在使用android,请尝试使用eclipse logcat获取错误。

在iOS上,这将始终以某种方式工作。如果插件失败,将使用浏览器自己的Geolocation API。虽然有后备的不良副作用:

弹出的权限对话框在标题中有html文件的名称,而不是应用名称 只有在应用程序运行时,授权权限才会保留 在Android上,只有在app / AndroidManifest.xml中设置了正确的权限才能生效:

options = { enableHighAccuracy: true };
navigator.geolocation.getCurrentPosition(onSuccess, onError, options);