【问题标题】:Phonegap Geolocation not workingPhonegap地理位置不起作用
【发布时间】:2013-05-27 18:26:58
【问题描述】:

我正在使用 Phonegap.Geolocation 来获取用户的当前位置。

我在官方网站的文档中找到了this example

但是,即使执行了 onDevice 就绪,也不会执行成功或错误函数回调。我对此感到非常困惑。

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

    // Cordova is ready
    //
    function onDeviceReady() {
      alert('deviceready');
        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');
    }

【问题讨论】:

    标签: android geolocation cordova


    【解决方案1】:

    其实是可以的,只是短时间内无法确定位置,所以既不能判断成功,也不能判断失败,所以不执行任何操作。

    这可以通过为 GeoLocation 的回调设置超时来管理

    【讨论】:

    • 我似乎无法获得成功的响应,它总是超时。你最后有什么工作吗?
    • 对不起,我无法提供具体答案。我认为这是关于您的手机而不是程序的一些外部问题。
    【解决方案2】:

    好的。我也为这个问题而苦苦挣扎[这就是我进入此页面的方式]

    但它终于奏效了。我刚刚做出改变:

    我改变了这一行:navigator.geolocation.getCurrentPosition(onSuccess, onError);

    对此:navigator.geolocation.getCurrentPosition(onSuccess);

    现在整个事情都可以正常工作了。

    【讨论】:

    • 这条评论帮助了我。但它背后的真正问题是什么?
    【解决方案3】:

    问题出在浏览器上。 清除浏览器缓存并再次运行。

    源代码:http://community.phonegap.com/nitobi/topics/geolocation_works_with_one_android_device_but_not_another

    【讨论】:

      【解决方案4】:

      当有phonegap功能不起作用时,请检查应用中是否设置了相应的权限。例如,对于互联网访问或 android 设备上的地理定位,您的 AndroidManifest.xml 必须包含以下行:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
      

      【讨论】:

        【解决方案5】:

        确保您已将 javascript 包含在正文中,而不是包含在 html 的头部部分中。在网上找不到任何线索后,我很难学会它,所以认为最好分享一下。它尽快对我来说就像魅力一样,我将 javascript 代码从

        【讨论】:

          【解决方案6】:
          1. 确保您已安装地理定位插件(运行 phonegap local plugin add org.apache.cordova.geolocation),并且设备中启用了 GPS。

          2. 添加超时并设置 enableHighAccuracy:

            navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout: 10000, enableHighAccuracy: true});
            

            在某些模拟器中,您需要将 enableHighAccuracy 设置为 false,如果仍然不起作用,请尝试。

          3. 如果您使用的是 Android 模拟器,它不会读取 GPS 值,因此我们需要通过命令行发送它们。我们需要在模拟器运行的端口中启动一个telnet会话(你可以在模拟器窗口标题中查看端口,开头的数字,在我的例子中是5554):

            telnet localhost 5554
            

          然后运行命令

              geo fix -122.4 37.78
          

          如果您关闭应用程序需要重新发送地理位置,所以如果它不起作用,只需在打开应用程序后,在超时事件触发之前运行geo fix 命令即可。

          【讨论】:

          • 插件改名了,命令现在是cordova plugin add cordova-plugin-geolocation
          【解决方案7】:

          如果您使用的是PhoneGap Desktop并且无法直接访问AndroidManifest.xml,解决方案是通过在config.xml中添加“config-file”元素来添加权限配置。

          在项目的 config.xml 中,添加以下行:

          <config-file platform="android" parent="/manifest" mode="merge">
              <uses-permission android:name="android.permission.INTERNET" />
              <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
          </config-file>    
          

          另外,请确保在 config.xml 的小部件元素中声明 android xml 命名空间:

          <widget id="com.phonegap.helloworld" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
          

          更多详情:http://docs.phonegap.com/phonegap-build/configuring/config-file-element/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-02-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多