在AngularJS中的视图之间保留GoogleMaps地图对象

时间:2013-09-24 14:15:08

标签: javascript google-maps angularjs angularjs-directive angular-ui

我决定使用AngularUI Map插件在我的一个视图中呈现Google Maps地图。

模板如下所示:

<div id="map">
<div ui-map="map" ui-options="mapOptions" id="map-canvas"
     ui-event="{'map-click': 'placeMarker($event, $params)'}">
</div>
</div>

地图存储在控制器的地图范围变量中。我通过在控制器主体中显式创建此变量来强制执行此操作:#scope.map = {};

我想要的是将此地图对象外部化为服务,以避免每次访问视图时都重新创建它。

我写的服务看起来像这样:

evee.factory('mapService', [function () {
    return {

    };
}]);

控制器代码如下所示:

var LocationController = function($scope, mapService) {

    $scope.map = mapService;

...

我无法使其工作,插件总是重新初始化地图。 我应该放弃插件的使用并采用这样的解决方案 non-plugin solution

谢谢。

1 个答案:

答案 0 :(得分:0)

angular-gm模块重用地图实例,因此没有内存泄漏。

如果没有模块,看起来这是用Angular解决的一个非常重要的问题。