我对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);
}
答案 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" />