Google会在setOptions之后映射多边形而不更新颜色?

时间:2013-08-12 21:52:03

标签: javascript google-maps angularjs

我正在使用Google Maps API和AngularJS。我有以下函数来使用setOptions更改多边形的颜色:

desk.modColor = function (color) {
     desk.setOptions({ fillColor: color });
}

我在angularJS中使用以下代码调用它:

$scope.focusedDesk.modColor('#0592fa');

然而,这仅在75%的时间内起作用。在AngularJS中进行足够的范围操作后,这将停止工作。如果我在console.log调用后立即desk modColor对象,则它具有正确的fillColor,但地图上的多边形未在视觉上更新。

为什么会发生这种情况?有没有办法确保setOptions在视觉上更新地图/多边形?感谢。

3 个答案:

答案 0 :(得分:1)

条件1

如果你在angularJS中以任何形式操作DOM,你应该使用指令 在这种情况下,您应该编写一个指令来为您执行此操作:

angular.module('myModule',[])
.directive('myDirective',function(){
   return {
      scope: { focusedDesk:'=' },
      link: function(scope, iElement, iAttrs){
               scope.$watch('your-whatever-object-or-property-you-want-to-watch-over', function(){
                                   //your desired action
                              })
            }
   }
})

,用法如下:

<div my-directive focusedDesk='focusedDesk'></div>


条件2

如果您只关心该属性的价值,可以$scope.$watchcontroller函数中的{{1}}相同

答案 1 :(得分:0)

  

有没有办法确保setOptions更新Map / Polygon   视觉?

是的,请致电

if (!$scope.$$phase) {$scope.$apply();}

答案 2 :(得分:0)

事实证明我用来更改多边形颜色的代码没有任何问题。我的一些其他代码是复制多边形,因此它们会堆叠,突出显示的多边形将被较新的重复项隐藏。