PhoneGAP 地理位置在 Android 中不起作用

Posted

技术标签:

【中文标题】PhoneGAP 地理位置在 Android 中不起作用【英文标题】:PhoneGAP Geoloaction NOT WORKING in Android 【发布时间】:2013-11-20 10:19:22 【问题描述】:

我正在使用 html5 + PhoneGap。 在我的应用程序中,我需要执行地理定位以获取纬度和经度。

当我搜索时,我从PhoneGap Website 获得了示例代码

document.addEventListener("deviceready", onDeviceReady, false);

// Cordova is ready
//
function onDeviceReady() 
  alert('deviceready');
    //navigator.geolocation.getCurrentPosition(onSuccess, onError);

    navigator.geolocation.getCurrentPosition(onSuccess);


// onSuccess Geolocation
//

function onSuccess(position) 
    var element = document.getElementById('geolocation');
    element.innerHTML = 'Latitude: '           + position.coords.latitude              + '<br />' +
                        'Longitude: '          + position.coords.longitude             + '<br />' +
                        'Altitude: '           + position.coords.altitude              + '<br />' +
                        'Accuracy: '           + position.coords.accuracy              + '<br />' +
                        'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +
                        'Heading: '            + position.coords.heading               + '<br />' +
                        'Speed: '              + position.coords.speed                 + '<br />' +
                        'Timestamp: '          +                                   position.timestamp          + '<br />';


// onError Callback receives a PositionError object
//
function onError(error) 
    alert('code: '    + error.code    + '\n' +
            'message: ' + error.message + '\n');

但它不起作用! 它总是显示 正在观看地理位置... 但未加载详细信息。 我已经搜索了这个问题,但我没有得到正确的解决方案。

我发现这里发布了同样的问题,但解决方案在这:(

如何使用 PhoneGap 获取纬度和经度的详细信息?

任何人都可以帮助我???

【问题讨论】:

【参考方案1】:

大约一年前我遇到了类似的问题,我的解决方案是重新启动我的手机 - 当时是一个 X And​​roid 4.0。不记得 phonegap 版本,但这是我不应该使用 phonegap 的一个完美例子。

如果这不起作用,问题可能与高精度选项有关:http://docs.phonegap.com/en/3.1.0/cordova_geolocation_geolocation.md.html#Geolocation 尝试将 enableHighAccuracy 切换为 false/true。

【讨论】:

是的,我试过 navigator.geolocation.getCurrentPosition(onSuccess, onError, enableHighAccuracy:true );但仍然无法正常工作:(【参考方案2】:

某些 android 设备和模拟器仅支持高或低 GPS 精度。

尝试以低精度和高精度运行您的代码。

function onDeviceReady() 
  var options =  enableHighAccuracy: true ; // also try with false.
  navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

如果这不起作用,请尝试在选项中调整超时,最后可能是您没有正确设置 Android 项目的 GPS 权限。检查应用清单以查看您设置或未设置的权限。

【讨论】:

嗨..@David Rust-Smith 我已经在 app/res/xml/config.xml 和 app/AndroidManifest.xml 中设置了所有权限。但它不起作用:( 我通过docs.phonegap.com/en/2.7.0/…【参考方案3】:

我认为原因是我们总是使用浏览器的 html5 实现而不是原生的。尝试确保您使用的是 cordova 原生函数来定位位置。

【讨论】:

以上是关于PhoneGAP 地理位置在 Android 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

插件在android phonegap中不起作用

Websocket在使用phonegap的android应用程序中不起作用

<select> 在 Android 2.3.3 上的 Phonegap 应用程序中不起作用

Sencha Touch 2.3.1 + Phonegap 3.4 jsonp 在 Android 中不工作,但在浏览器上工作

Phonegap 事件在 iPhone 中不起作用

来自 build.phonegap.com 的 .ipa 文件在 iPhone 中不起作用