0

J'ai créé une application mobile ionic angularjs ngCordova, dans lequel j'ai utilisé le plugin de géolocalisation ngCorodova afin d'obtenir l'emplacement de l'utilisateur. quand je teste ceci sur le navigateur cela fonctionne très bien. mais quand même je [android-app.apk] j'installe sur l'application mobile [évidemment après avoir coché l'option "sources inconnues"]; Je ne suis pas en mesure d'obtenir l'emplacement. Je vois dans le cadre de l'application, la permission est là pour accéder à l'emplacement sur mobile. En outre, lorsque l'événement est déclenché, le symbole GPS s'affiche sur la barre supérieure, mais il disparaît.Impossible de trouver l'emplacement de l'utilisateur lorsque apk installé sur téléphone Android

Quelqu'un peut-il m'aider avec ça?

est Ci-dessous le code pour l'emplacement dans mes controller.js

.directive('reverseGeocode', function ($cordovaGeolocation, $rootScope) { 
    return { 
     restrict: 'E', 
     template: '<div></div>', 
     link: function (scope, element, attrs) { 
      var geocoder = new google.maps.Geocoder(); 

      var posOptions = {timeout: 10000, enableHighAccuracy: true}; 
       $cordovaGeolocation 
       .getCurrentPosition(posOptions) 
       .then(function (position) { 
        var lati = position.coords.latitude; 
        var longi = position.coords.longitude; 



       // console.log(angular.toJson($rootScope.lati) + " - "); 

        var request = new XMLHttpRequest(); 

        var method = 'GET'; 
        //var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='+lat+','+long+'&sensor=true'; 
        var async = true; 
      //alert(url); 
        //request.open(method, url, async); 
        //alert(angular.toJson(request.open(method, url, async))); 
         // var data = JSON.stringify(request.responseText);    
        // alert(JSON.stringify(request.responseText)); 

      var latlng = new google.maps.LatLng(lati, longi); 

      geocoder.geocode({ 'latLng': latlng }, function (results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        if (results[1]) { 
        //alert(results[1].address_components[1].long_name); 
        $rootScope.colony = results[1].address_components[1].long_name; 
        //alert(results[1].address_components[1].long_name); 
        //alert(results[1].address_components[1].long_name); 
        //alert(angular.toJson(results[1].address_components[1].long_name)); 
         element.text(results[1].formatted_address); 
        } else { 
         element.text('Location not found'); 
        } 
       } else { 
        element.text('Geocoder failed due to: ' + status); 
       } 
      });      

       }, function(err) { 
        // error 
       }); 


       var watchOptions = { 
frequency : 1000, 
timeout : 3000, 
enableHighAccuracy: false // may cause errors if true 
    }; 

    var watch = $cordovaGeolocation.watchPosition(watchOptions); 
    watch.then(
    null, 
    function(err) { 
    // error 
    }, 
    function(position) { 
    var lat = position.coords.latitude 
     alert("abc >>" + lat); 
    var long = position.coords.longitude 
    }); 


    watch.clearWatch(); 
    // OR 
    $cordovaGeolocation.clearWatch(watch) 
    .then(function(result) { 
    // success 
    }, function (error) { 
    // error 
    }); 


     }, 
     replace: true 
    } 
}) 

dans le fichier html que je l'utilise comme:

<h6> 
    User Colony: {{ colony }} 
    <reverse-geocode lat={{lati}} lng={{longi}}></reverse-geocode> 
    </h6> 
    <a href="#" ng-click="showStores(colony)" class="button button-block button-positive"> 
     Browse Store 
</a> 

qui triggeres la directive et trouver lat et long de l'utilisateur.

Lors de tests sur un navigateur, il fonctionne parfaitement, mais pas sur le mobile lui-même.

enter image description here

Répondre

0

Dans android, il est super compliqué de travailler avec l'utilisateur GPS, rappelez-vous que, souvent, la géolocalisation nous obtenons est à partir du navigateur et non le GPS lui-même, et cela varie beaucoup dans les dispositifs. Pour votre aide, je vous recommande d'installer cordova.plugins.diagnostic

function onDeviceReady() { 
     cordova.plugins.diagnostic.isLocationAuthorized(function(enabled){ 
     //alert("gps es : " + (enabled ? "enabled" : "disabled")); 
     }, function(error){ 
      //alert("error: "+error); 
     }); 
     cordova.plugins.diagnostic.isLocationEnabled(function(enabled){ 
      if(!enabled){ 
      alert("gps not actived"); 
      }else{ 
      navigator.geolocation.getCurrentPosition(onSuccess, onError, {enableHighAccuracy: true,timeout: 5000,maximumAge: 5000}); 
      } 
     }, function(error){ 
      console.log("The following error occurred: "+error); 
     }); 
    } 

toujours essayer de voir si je peux obtenir une latitude et la longitude et si ce n'est pas activé ou non, vous pouvez obtenir, il envoie un message à l'utilisateur. J'espère que ça t'aide.