angular-google-maps更新标记模型

时间:2015-02-05 13:01:38

标签: angularjs google-maps angular-google-maps

我正在使用angular-google-maps库,但是当我动态地将新标记添加到我的模型时,我似乎无法更新地图。模型中的硬编码标记正确显示。

HTML

<ui-gmap-markers models="map.placeMarkers" coords="'self'" icon="'icon'" options="'options'" click="'onClicked'" modelsbyref="true"></ui-gmap-markers>

JS

$scope.map.placeMarkers = [
            {
                id: 1,
                latitude: 45,
                longitude: -74,
                options: {},
                title: 'Test 123'
            },
            {
                id: 2,
                latitude: 15,
                longitude: 30,
                options: {},
                title: 'Test 1234'
            }
        ];

但是当我这样做时,上述工作正常:

var place = {
   id: 3,
   latitude: 455,
   longitude: -574,
   options: {},
   title: 'Test 1233455'
};

$scope.map.placeMarkers.push(place);

模型是更新但不是地图。我已尝试使用$ scope。$ apply()但由于摘要周期已在进行中而出现错误。

2 个答案:

答案 0 :(得分:0)

你需要在ui-gmap-markers指令中将modelsbyref设置为false

 <ui-gmap-markers models="places" coords="'self'" modelsbyref="false">  

   </ui-gmap-markers>

答案 1 :(得分:0)

我也一样。花了几个小时寻找解决方案。

似乎每当我们更新标记时,angularjs都不会立即更新它。在将新标记推送到数组后,只需调用 $ scope。$ digest()

同时检查 $ scope。$ apply()函数,它会自动调用$ scope。$ digest()。 请参阅本教程详细说明: tutorial showing $scope.$digest(), $scope.$apply, $scope.watch

它写在上面的教程中:

  

您可能会遇到AngularJS没有为您调用$ digest()函数的一些极端情况。您通常会通过注意数据绑定不会更新显示的值来检测到这一点。在这种情况下,调用$ scope。$ digest(),它应该工作。或者,您也许可以使用$ scope。$ apply()