Есть ли способ потушить V3 google.maps.Polygon? - PullRequest
5 голосов
/ 03 марта 2012

Есть ли способ затухания V3 google.maps.Polygon?

Вместо того, чтобы просто скрывать / удалять стандартный многоугольник Google Maps V3, я хочу его убрать.

Возможно ли это? Есть ли там плагины?

Ответы [ 2 ]

4 голосов
/ 07 марта 2012

Ниже приведено решение, которое я создал для решения проблемы равномерного замирания из обводки и заливки, и я сделал его легко повторным, сделав его функцией.

секунд - это время, которое потребуется для затухания и обратного вызова, чтобы вы могли выполнить другое действие после его завершения.

В моем проекте моя функция обратного вызова удаляет многоугольник с карты и удаляет переменную.

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);
}
2 голосов
/ 03 марта 2012

Используйте 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);
...