1

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

我试图找出在工厂中或作为transformResponse. 不幸的是,我使用的 AngularUI maps 指令将地图存储在本地范围内。

Map将对象提供给工厂或 transformResponse的最佳方式是什么?

4

1 回答 1

2

如果您坚持您的地理坐标服务返回Markers 而不是地理坐标,那么您有两个我能想到的选择:

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

这是代码可能是什么样子的粗略草图。我正在从内存中提取 Google Maps API,但希望这可以帮助您了解这个想法。

我认为第一个选项更可取,但是很难说,因为您没有提供很多可以使用的上下文。

于 2013-05-22T04:19:10.453 回答