PhoneGAP地理定位不适用于Android

时间:2013-11-20 10:19:22

标签: html5 cordova geolocation

使用HTML5 + PhoneGap。 在我的应用程序中,我需要通过Geolocation来获取纬度和经度。

当我搜索时,我得到了来自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获取纬度和经度详细信息?

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

某些Android设备和模拟器仅支持高或低GPS准确度。

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

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

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

答案 2 :(得分:0)

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