如何检测switchToLocationSettings()后是否启用了gps?

时间:2017-10-23 07:37:10

标签: ionic-framework gps cordova-plugins

我正在研究离子项目。我需要根据当前地区获取物品。为了获得当前的区域,我尝试了下面的内容。

cordova.plugins.diagnostic.isLocationEnabled(function(enabled) {
 alert("Location is " + (enabled ? "enabled" : "disabled"));
 if(!enabled)
  cordova.plugins.diagnostic.switchToLocationSettings();
 var geocoder = new google.maps.Geocoder();
 if (navigator.geolocation) {
   navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
 } 
 function successFunction(position) {
  var lat = position.coords.latitude;
  var lng = position.coords.longitude;
 }
 function errorFunction(){
  $ionicPopup.alert({
  title:"Alert",
  content:"Geocoder failed"
 });
}
function codeLatLng(lat, lng) {
 geocoder.geocode({'latLng': new google.maps.LatLng(lat, lng)}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    if (results[1]) {
      for (var i=0; i<results[0].address_components.length; i++) {
        for (var b=0;b<results[0].address_components[i].types.length;b++) {
          if (results[0].address_components[i].types[b] == "administrative_area_level_2") {
               district= results[0].address_components[i];
          }
        }
      }
     alert(distrcit.long_name);
    }
    else {
      alert("No results");
    }
   }
   else {
    alert("Geocoder Failed");
   }
  });
 }
}, function(error) {
});

如果在切换到位置设置后启用GPS,此代码工作正常。我没有启用GPS并重新进入应用程序时遇到问题。如何在移动到位置设置并返回应用程序后检测是否已启用?虽然我在StackOverflow中提到了很多帖子,但我并没有得到我真正需要的解决方案。所以请帮助我解决它。

1 个答案:

答案 0 :(得分:2)

  

如何在移至位置设置并返回应用程序后检测是否已启用?

您可以使用resume event检测应用返回前台的时间。

function onResume() {
    cordova.plugins.diagnostic.isLocationEnabled(function(enabled) {
        console.log("Location is " + (enabled ? "enabled" : "disabled"));           
        // etc.
    }, function(error) {});
}
document.addEventListener("resume", onResume, false);