[英]phonegap geolocation doesn't work
按照这个指南Phonegap Geoloactaion去了,最终得到了这个代码(android):
<html>
<head>
<title>Device Properties Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.5.0.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.1.min.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
jQuery(window).ready(function(){
navigator.geolocation.getCurrentPosition(onSuccess, onError);
});
}
// 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');
}
</script>
</head>
<body>
<p id="geolocation">Finding geolocation...</p>
</body>
</html>
它被困在“寻找地理位置......”的消息上。 通常,当应用程序想要使用我的位置时,他们会要求打开GPS,您可以在通知栏上看到一个小图标,说明它已打开并搜索GPS,但这似乎不会发生在我的代码中。 编辑:我尝试了geolocation.watchPosition完整示例,因为它有一个超时它提醒我超时,所以我猜他试图找到我的坐标但也失败了,为什么? 地图和其他导航应用程序工作正常
你放了吗
<feature name="http://api.phonegap.com/1.0/geolocation" />
在你的config.xml
文件?
有关PhoneGap中config.xml
文件的更多信息, 请查看此页面
你在你的模拟器上进行测试吗?
如果是,那么您需要通过转到Eclipse - > DDMS - > Emulator Control手动推动坐标,并从那里将位置坐标发送到仿真器。
同时检查设备上的设置是否允许使用位置服务。
我有这个问题。有一天它工作,第二天起它停止工作。当重新启动手机时,它工作
在phonegap中,应用程序不会要求您打开gps,您必须手动执行此操作。 此外,您可以提供一些选项,例如
var config = {
enableHighAccuracy: true,
timeout: 20000,
maximumAge: 18000000
}
因此,您现在将在超时时触发错误回调,并且地理定位无法确定您的位置。 您应该只调试问题并查看错误回调返回的内容。
navigator.geolocation.getCurrentPosition(onSuccess, onError, config);
在你的情况下,gps不会被解雇。 关于这个问题,我不能说太多,因为你只提供了html5代码。 我能想象的一件事是你缺少cordova.js文件。
为了更好地进行测试和调试,请使用Ripple模拟器https://chrome.google.com/webstore/detail/ripple-emulator-beta/geelfhphabnejjhdalkjhgipohgpdnoc
它模仿webapps甚至有一个地理定位模型。 这样您就可以更好地调试问题,因为您可以查看Web控制台。
我知道这已经过时了,但我注意到GPS要在phoneGap应用中使用,您需要“同意”与Google分享您的位置。
如果我以前不同意,那么这个位置每次都会超时。
在远程加载jQuery时; 你可以验证它是否已加载? 例如,如果你在onload处理程序中放置一个alert(),它会显示出来吗?
function onDeviceReady() {
jQuery(window).ready(function(){
alert("jQuery ready");
navigator.geolocation.getCurrentPosition(onSuccess, onError);
});
}
如果您没有看到警告消息,则可能必须检查“res / xml / config.xml”以查看是否正确设置了“访问源”(例如,使用通配符)
<access origin="*" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.