我有一个 REST 服务,它返回我$http
在 AngularJS 中使用的工厂使用的地理坐标。为了将这些坐标显示为标记,我需要创建google.maps.Marker
同时具有位置和对象的google.maps.Map
对象。
我试图找出在工厂中或作为transformResponse
. 不幸的是,我使用的 AngularUI maps 指令将地图存储在本地范围内。
Map
将对象提供给工厂或 transformResponse的最佳方式是什么?
我有一个 REST 服务,它返回我$http
在 AngularJS 中使用的工厂使用的地理坐标。为了将这些坐标显示为标记,我需要创建google.maps.Marker
同时具有位置和对象的google.maps.Map
对象。
我试图找出在工厂中或作为transformResponse
. 不幸的是,我使用的 AngularUI maps 指令将地图存储在本地范围内。
Map
将对象提供给工厂或 transformResponse的最佳方式是什么?
如果您坚持您的地理坐标服务返回Marker
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 };
});
这是代码可能是什么样子的粗略草图。我正在从内存中提取 Google Maps API,但希望这可以帮助您了解这个想法。
我认为第一个选项更可取,但是很难说,因为您没有提供很多可以使用的上下文。