谷歌地图多边形在设置选项后不更新颜色

Google maps polygon not updating color after setOptions?

本文关键字:更新 颜色 选项 多边形 设置 谷歌地图      更新时间:2023-09-26

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

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

我从angularJS中调用它,代码如下:

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

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

你知道为什么会这样吗?是否有任何方法可以确保setOptions在视觉上更新地图/多边形?谢谢

条件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

如果您只关心属性的值,则可以在controller函数

中使用与上面相同的$scope.$watch

事实证明,我用来更改多边形颜色的代码没有任何问题。我的其他一些代码是复制多边形,所以它们会堆叠起来,高亮显示的多边形会被新的副本隐藏。

是否有任何方法可以确保setOptions更新贴图/多边形视觉上?

是的,请致电

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