5

有没有办法淡出 V3 google.maps.Polygon?

我不想只是隐藏/删除标准的 Google Maps V3 多边形,而是要将其淡出。

这可能吗?那里有插件吗?

4

2 回答 2

4

以下是我创建的一个解决方案,用于解决笔划和填充的统一淡出问题,我通过使其成为一个函数使其易于重用。

seconds 是淡出发生和回调需要多长时间,因此您可以在完成后执行另一个操作。

在我的项目中,我的回调函数从地图中删除多边形并删除变量。

function polygon_fadeout(polygon, seconds, callback){
    var
    fill = (polygon.fillOpacity*50)/(seconds*999),
    stroke = (polygon.strokeOpacity*50)/(seconds*999),
    fadeout = setInterval(function(){
        if(polygon.strokeOpacity + polygon.fillOpacity <= 0.0){
            clearInterval(fadeout);
            polygon.setVisible(false);
            if(typeof(callback) == 'function')
                callback();
            return;
        }
        polygon.setOptions({
            'fillOpacity': Math.max(0, polygon.fillOpacity-fill),
            'strokeOpacity': Math.max(0, polygon.strokeOpacity-stroke)
        });
    }, 50);
}
于 2012-03-07T16:31:04.620 回答
2

使用 Javascript setInterval() / clearInterval()逐渐改变多边形的不透明度。像这样的东西:

var opacity = [1, 0.8]
var polygon = new google.maps.Polygon({
        strokeColor: "#000099",
        strokeOpacity: opacity[0],
        strokeWeight: 2,
        fillColor: "#0000FF",
        fillOpacity: opacity[1],
        paths: [ /* your points here */ ]
});

var interval = setInterval(function() {
  if (opacity[0] <= 0.0 && opacity[1] <= 0.0) {
    clearInterval(interval);
    polygon.setVisible(false);
  } else {
    opacity[0] = Math.max(0.0, opacity[0] - 0.1);
    opacity[1] = Math.max(0.0, opacity[1] - 0.1);
    polygon.setOptions({strokeOpacity: opacity[0], fillOpacity: opacity[1]});    
  }
}, 50);
于 2012-03-03T15:39:15.223 回答