PhoneGap / Cordova V3.4.0 - GPS插件无法正常工作 - 永久缓存最新点

时间:2014-05-08 20:37:18

标签: caching cordova gps geolocation

我试了好几天才让Cordova V3.4,GPS插件正常工作。 我在互联网上看到了很多解决方案和建议,但是他们没有解决这个问题。

问题仅在手机差距应用上发生 [在设备或模拟器中使用APK部署] (在浏览器中GPS工作正常)。

测试详情:

  1. 电话:Nexus 5和三星Galaxi 2.
  2. 模拟器:Android常规模拟器和GenyMotion模拟器。
  3. Cordova安装:通过CLI

    • 我通过CLI添加了地理位置插件
    • 我添加了对AndroiedManifest的权限:

      uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" 
      uses-permission android:name="android.permission.INTERNET"
      uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"
      uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" 
      
    • config.xml中的
    • : 插件名称="地理定位"值=" org.apache.cordova.GeoBroker"
  4. ISSUE:

    清洁重启后:(没有GPS)

    1. 我输入了我的应用程序,我收到错误代码错误 - 正如所料:)
    2. 我启用GPS,重新输入我的应用程序,并查看我所在位置 - 按预期
    3. 我禁用GPS,重新输入我的应用程序,并查看我所在地的其他位置 - 按预期
    4. GPS禁用,重新进入我的应用程序,然后看到以前的相同点(我不知道如何缓存它 - 我通过将值设为0来禁用maximumAge选项)
    5. GPS禁用,无线禁用,3G网络禁用,我运行我的应用程序,我得到最新的位置相同点4.现在同样的问题永远发生,我会得到相同的位置直到我将打开我的GPS或我将重新启动我的设备。
    6. P.S:BTW我也尝试过使用HTML5 Geo Location,我得到了同样的问题。

      我的代码:(我尝试过几次,但这是我尝试使用的最新版本。我尝试两次调用getCurrentPosition,因为我读到有时一次调用是不够的:():

      var options = {
              enableHighAccuracy: true,
              timeout: 5000,
              maximumAge: 0
            };
      
            function success(pos) {
              var crd = pos.coords;
              var str = 'Your current position is:'+'Latitude : ' + crd.latitude+'Longitude: ' + crd.longitude+'More or less ' + crd.accuracy + ' meters.' + ' TimeStap : ' + crd.ti;
              alert(str);
            }
      
            function error1(err) {
              alert('error 1');
              alert('ERROR(' + err.code + '): ' + err.message);
              var options = {
                enableHighAccuracy: false,
                timeout: 5000,
                maximumAge: 0
              };
              navigator.geolocation.getCurrentPosition(success, error2, options);
            }
      
            function error2(err){
              alert('error 2');
              alert('ERROR(' + err.code + '): ' + err.message);
            }
      
            navigator.geolocation.getCurrentPosition(success, error1, options);
      },
      

0 个答案:

没有答案