phonegap地理定位不起作用

时间:2013-03-04 15:03:19

标签: android cordova mobile geolocation

根据本指南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完整示例,因为它有一个超时,它会提醒我超时,所以我猜他试图找到我的坐标但也失败了,为什么会这样?地图和其他导航应用程序正常工作

6 个答案:

答案 0 :(得分:4)

你放了

<feature name="http://api.phonegap.com/1.0/geolocation" />

config.xml文件上?

有关PhoneGap check this page

config.xml文件的详细信息,请参阅

答案 1 :(得分:3)

您是否在模拟器上进行测试?

如果是,那么你需要通过转到Eclipse手动推动坐标 - &gt; DDMS - &gt;仿真器控制并从那里将位置坐标发送到仿真器。

同时检查设备上的设置是否允许使用位置服务。

答案 2 :(得分:1)

我遇到了这个问题。有一天它工作了,第二天就停止了工作。当重新启动电话时,它工作了

答案 3 :(得分:1)

GPS工作时

在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控制台。

答案 4 :(得分:1)

我知道这已经过时了,但我注意到GPS可以在phoneGap应用中运行,你需要同意&#34;与Google分享您的位置。

如果我以前不同意,那么这个位置每次都会超时。

答案 5 :(得分:0)

当您正在远程加载jQuery时;你可以验证它是否已加载? 例如,如果你在onload处理程序中放置一个alert(),它会显示吗?

function onDeviceReady() {
  jQuery(window).ready(function(){
    alert("jQuery ready");
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
  });
}

如果您没有看到警告消息,则可能需要检查“res / xml / config.xml”以查看“访问来源”是否设置正确(例如使用通配符)

<access origin="*" />