Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将AngularUI Google Map对象传递给工厂或请求转换?_Javascript_Google Maps_Angularjs_Angular Ui_Factories - Fatal编程技术网

Javascript 如何将AngularUI Google Map对象传递给工厂或请求转换?

Javascript 如何将AngularUI Google Map对象传递给工厂或请求转换?,javascript,google-maps,angularjs,angular-ui,factories,Javascript,Google Maps,Angularjs,Angular Ui,Factories,我有一个REST服务,它使用AngularJS中的$http返回我与工厂使用的地理坐标。为了将这些坐标显示为标记,我需要创建google.maps.Marker对象,该对象同时具有位置和google.maps.Map对象 我正试图找出在工厂中或作为transformResponse的一部分进行这些数据转换的最佳方法。不幸的是,我使用的angularuimaps指令将映射存储在本地范围中 向factory或transformResponse提供映射对象的最佳方式是什么?如果您坚持您的地理坐标服务返

我有一个REST服务,它使用AngularJS中的
$http
返回我与工厂使用的地理坐标。为了将这些坐标显示为标记,我需要创建
google.maps.Marker
对象,该对象同时具有位置和
google.maps.Map
对象

我正试图找出在工厂中或作为
transformResponse
的一部分进行这些数据转换的最佳方法。不幸的是,我使用的angularuimaps指令将映射存储在本地范围中


向factory或transformResponse提供
映射
对象的最佳方式是什么?

如果您坚持您的地理坐标服务返回
标记
s而不是地理坐标,那么我可以想到两个选项:

a) 将地图传递给地理坐标服务

angular.module('mapGuy', function($scope, geoService) {
  geoService.addMarkers($scope.map);
}).
factory('geoService', function($http) {
  var addMarkers = function(map) {
    $http.get('/path/to/geo/server').success(function(points) {
      angular.forEach(points, function(points) {
        new google.maps.Marker({
          map: map, position: new google.maps.LatLng(points.lat, points.long)
        })
      })
    });
  };

  return { addMarkers: addMarkers };
});
b) 将映射粘贴在模块的
$rootScope
上,并将
$rootScope
注入服务

angular.module('mapGuy', function($scope, $rootScope, geoService) {
  $rootScope.map = $scope.map;
  geoService.addMarkers();
}).
factory('geoService', function($http, $rootScope) {
  var addMarkers = function() {
    $http.get('/path/to/geo/server').success(function(points) {
      angular.forEach(points, function(points) {
        new google.maps.Marker({
          map: $rootScope.map, position: new google.maps.LatLng(points.lat, points.long)
        })
      })
    });
  };

  return { addMarkers: addMarkers };
});
这是代码可能的大致情况。我正在从内存中提取GoogleMapsAPI,但希望这能帮助您理解这个想法


我认为第一个选项更可取,但很难说,因为您没有提供太多的上下文来处理。

选项B是我最初做的,但它似乎是“强制”的或不起作用的。方案A给了我一些思考的东西。