Javascript 如何将AngularUI Google Map对象传递给工厂或请求转换?
我有一个REST服务,它使用AngularJS中的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提供映射对象的最佳方式是什么?如果您坚持您的地理坐标服务返
$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给了我一些思考的东西。