使用Cordova的navigator.geolocation.getCurrentPosition

时间:2014-09-29 14:49:37

标签: android cordova

我对Cordova的地理定位插件存在一个奇怪的问题 完美地使用我的平板电脑(华硕TF201,Android 4.4.2),但它不适用于我的手机(LG L9,Android 4.1.2)和模拟器(Nexus 5,Android 4.4.4)。 /> 它什么都不打印,甚至没有onErrorGeo函数。
这是代码:

var onSuccessGeo = function(position) {  
  $("#geolocalization").html('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>');
};
function onErrorGeo(error) {  
  $("#geolocalization").html('code: '    + error.code    + '<br>' +
      'message: ' + error.message + '<br>');
}
function Geolocal(){
  navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo);
}

2 个答案:

答案 0 :(得分:2)

所以我也遇到了这个问题,但是我根据Mozilla的文档找到了它,cordova插件遵循这些文档:https://developer.mozilla.org/en-US/docs/Web/API/Geolocation

在文档中,它声明您可以提供PositionOption作为base_rel的第三个参数。请参阅此处了解文档:https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions

因此,如果您将代码更改为

-(BOOL)isLeapYear {
    NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
    components.month = 2;
    components.day = 29;

    NSDate *date = [[NSDate currentCalendar] dateFromComponents:components];
    return (date.month == 2 && date.day == 29);
}

5秒后它将超时错误,否则默认超时为无限,因此它将继续等待代码被触发,如果你的位置关闭或GPS无法获得正确的位置,这可能永远不会

希望这有帮助。

答案 1 :(得分:0)

代码对我来说是正确的,但只是为了确保您可以尝试使用像这样的警告消息

function onErrorGeo(error) {  
   alert("error");
}

确保错误功能确实无法正常工作。您也可以在成功功能中执行此操作。

如果您的代码无效,请确保您正在执行

navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo);
> 后,PhoneGap事件设备已经启动。

你可以试试这个:

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

function onDeviceReady() 
   navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo);
}

更新:您还应该确保应用程序的config.xml在widget标记内的某处声明:

<gap:plugin name="org.apache.cordova.geolocation" />