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

时间:2012-03-02 22:27:01

标签: google-maps-api-3 fadeout polygons

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

我不想隐藏/删除标准的Google Maps V3多边形,而是希望淡出它。

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

2 个答案:

答案 0 :(得分:4)

以下是我创建的解决方案,以解决笔划和填充的均匀淡出问题,并通过使其成为一种功能使其易于重复使用。

秒是淡出发生和回调所需的时间,因此一旦完成就可以执行另一个操作。

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

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);
}

答案 1 :(得分: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);