如何在Angular JS中传递地理位置数据?

时间:2015-04-08 00:36:09

标签: javascript angularjs geolocation ionic-framework

所以基本上我构建一个基于位置的角度/离子应用,基本上每个功能都需要用户的地理位置。我试图将用户的位置数据提供给表单,控制器等。我知道获取用户位置的调用如下所示(这是一个回调)。

 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);
  });

基本上我如何传递用户所在位置的结果并将其用于各种其他功能?我是否需要在我想要用户所在位置的每个地方复制此代码段("注意它处于监视模式以检测更改")

非常感谢。

2 个答案:

答案 0 :(得分:0)

您应该将该代码放在服务或工厂中,然后根据需要将其注入控制器。

答案 1 :(得分:0)

创建工厂并让诺言解析latLng。

.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;
  }

}
}])

然后您可以将工厂注入您需要的任何地方。