当我在 GPS 关闭的情况下启动应用程序,后来 GPS 被激活时,未检测到位置

Posted

技术标签:

【中文标题】当我在 GPS 关闭的情况下启动应用程序,后来 GPS 被激活时,未检测到位置【英文标题】:When I start the App with GPS off , and later GPS is activated, Location is not detected 【发布时间】:2016-07-09 02:22:35 【问题描述】:

我在 Ionic App 中通过 Google 地图进行 GPS 检测时遇到问题。当我在关闭 GPS 的情况下启动应用程序,然后我从设置设备更改为打开 GPS,单击 Find Me 按钮 - centerOnMe() 功能 - GPS 无法正常工作。函数总是响应

`Error: GPS Timeout! ERROR = 3` 

一开始我以为是缓存问题,但我发现不是这样。从视图中使用 $state.reload 并不重要。 ¿ 有人遇到同样的问题吗?感谢您的支持。我附上下面的函数:

  $scope.centerOnMe = function() 

        $ionicPlatform.ready(function() 
        console.log('Click on Find Me');

        if(!map) 
            return;
        

        $ionicLoading.show(
            content: 'Getting current location...',
            showBackdrop: false
        );

        //$state.reload('app.map');
        watchPositionId = navigator.geolocation.watchPosition(function(position)                     
                navigator.geolocation.clearWatch(watchPositionId);
                var latitude     = position.coords.latitude;
                var longitude    = position.coords.longitude;
                $scope.latitude  = latitude;
                $scope.longitude = longitude;
                var geolocpoint  = new google.maps.LatLng(latitude, longitude);
                map.setCenter(geolocpoint);     
        );
        navigator.geolocation.getCurrentPosition(function (position) 
                   var lat  = position.coords.latitude
                   var long = position.coords.longitude                
                   $scope.center = new google.maps.LatLng(lat, long);
                   $ionicLoading.hide();
                   console.log("GPS is enabled" + $scope.center);
         , function(err) 
                  // error
                  if (err.code == 1)      console.log('GPS disabled! ERROR = '       + err.code);  
                  else if(err.code == 2)  console.log('GPS is unavailable! ERROR = ' + err.code);  
                  else if(err.code == 3)  console.log('Error: GPS Timeout! ERROR = ' + err.code);     
                  $ionicLoading.hide();
         , 
                  enableHighAccuracy: true, timeout: 20000
              
         );

       );      
    ;

【问题讨论】:

【参考方案1】:

你最好使用this插件,

 cordova plugin add cordova.plugins.diagnostic

会直接检测gps是否开启。

有关更多详细信息,请查看以下 ionic 论坛问题,

    Geo location timeout vs location permission error Get Current Position not working after turning the GPS off on the device even if it turned on again?

希望对你有帮助!!

【讨论】:

以上是关于当我在 GPS 关闭的情况下启动应用程序,后来 GPS 被激活时,未检测到位置的主要内容,如果未能解决你的问题,请参考以下文章

从未调用过位置服务 onProviderEnabled

当我在没有调试器的情况下方便地启动 Android Studio 应用程序时崩溃

我在春季启动中有一个兔子 amqp 侦听器,它在不关闭应用程序的情况下保持不变

CLLocationmanager 中的 GPS 位置更新

使用标签、Wifi 和 Gps

Android 从 GPS 获取位置