【问题标题】:phonegap geolocation doesn't workphonegap 地理定位不起作用
【发布时间】:2013-02-18 17:14:24
【问题描述】:

按照本指南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 完整示例,因为它有超时,它会提醒我超时,所以我猜他试图找到我的坐标但也失败了,这是为什么呢?地图和其他导航应用运行良好

【问题讨论】:

    标签: android cordova mobile geolocation


    【解决方案1】:

    你放了吗

    &lt;feature name="http://api.phonegap.com/1.0/geolocation" /&gt;

    在您的config.xml 文件上?

    有关config.xml PhoneGap 中的文件check this page 的更多信息

    【讨论】:

    • 它不存在,我通过控制台安装了几个插件,只有 1 个
    • 这是 web config.xml 还是 android app/res/xml config.xml 中的配置?
    • @Adgezaza 这是 phonegap 的配置。欲了解更多信息link
    【解决方案2】:

    我知道这是旧的,但我注意到 GPS 要在 phoneGap 应用程序中工作,您需要“同意”与 Google 共享您的位置。

    当我之前不同意时,位置每次都会超时。

    【讨论】:

      【解决方案3】:

      当 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

      它模拟 web 应用程序,甚至还有一个地理定位模拟程序。这样您就可以更好地调试问题,因为您可以查看 Web 控制台。

      【讨论】:

        【解决方案4】:

        我遇到了这个问题。一天它工作,第二天它停止工作。重新启动手机时它工作

        【讨论】:

          【解决方案5】:

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

          如果是,那么您需要通过 Eclipse -> DDMS -> Emulator Control 手动推送坐标,然后从那里将位置坐标发送到 Emulator。

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

          【讨论】:

            【解决方案6】:

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

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

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

            <access origin="*" />
            

            【讨论】:

            • 就像这样 所以我改变了它,因为由于某种原因它从来没有成为我,但改变没有帮助:(
            • 您是否也添加了警报,只是为了验证 jQuery 'ready' 事件是否已触发?
            • 是的,警报从未被触发,所以我尝试在没有“就绪”事件的情况下发出警报,尽管地理位置仍然不起作用
            • 好的,如果您在 onDeviceReady 处理程序中放置警报?难不成那个也不叫? (你确定cordova js的路径是正确的吗?)
            • onDeviceReady 警报触发(导航不起作用),我很确定。我什至使用了他们的示例应用程序,仍然没有
            猜你喜欢
            • 2013-05-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多