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.