2015-04-08 5 views
0

Donc, fondamentalement, je construis une application angulaire/ionique qui est fortement basée sur l'emplacement, essentiellement chaque fonctionnalité nécessite la géo-localisation de l'utilisateur. J'essaye de m'envelopper de fournir les données de localisation de l'utilisateur aux formulaires, aux contrôleurs etc. Je comprends que l'appel pour obtenir la loc de l'utilisateur est comme ci-dessous (qui est un rappel).Comment transmettre des données de géolocalisation dans Angular JS?

Navigator.geolocation.watchPosition(function (pos) { 
     var latLng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude); 
    }, function (error) { 
     alert('Unable to get location: ' + error.message); 
    }); 

Fondamentalement, comment puis-je passer le résultat de cet emplacement de l'utilisateur et l'utiliser pour diverses autres fonctions? Ai-je besoin de dupliquer cet extrait de code à chaque endroit où je souhaite localiser l'utilisateur ("remarquez qu'il est en mode veille pour détecter les modifications")

Merci beaucoup.

Répondre

0

Vous devez mettre ce code dans un service ou une usine, puis l'injecter dans vos contrôleurs si nécessaire.

0

Créer une usine et avoir la promesse de résoudre le retard.

.factory('Local', ['$q', function($q){ 
    return {getLocation: function(options){ 
    var q = $q.defer(); 
    navigator.geolocation.watchPosition(function (pos) { 
    var latLng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude); 
    q.resolve(latLng); 
}, function (error) { 
    q.reject(error) 
}, options); 
    return q.promise; 
    } 

} 
}]) 

Ensuite, vous pouvez injecter l'usine partout où vous en avez besoin.