Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Google Maps API多边形的Javascript超时函数_Javascript_Google Maps - Fatal编程技术网

使用Google Maps API多边形的Javascript超时函数

使用Google Maps API多边形的Javascript超时函数,javascript,google-maps,Javascript,Google Maps,我目前正在尝试创建一个程序,每2秒增加一个多边形的不透明度,直到它不透明为止。我最终想用多个多边形来传递数据给用户,但我只是想让一个多边形工作。代码是用Javascript编写的,并使用timeout函数来完成 代码应该在地图上绘制一个不透明度为0.1的红色正方形,然后在2秒钟后绘制一个不透明度为0.2的类似正方形。此过程将继续,直到不透明度等于1。问题是程序跳过前9个正方形(不透明度

我目前正在尝试创建一个程序,每2秒增加一个多边形的不透明度,直到它不透明为止。我最终想用多个多边形来传递数据给用户,但我只是想让一个多边形工作。代码是用
Javascript
编写的,并使用timeout函数来完成

代码应该在地图上绘制一个不透明度为0.1的红色正方形,然后在2秒钟后绘制一个不透明度为0.2的类似正方形。此过程将继续,直到不透明度等于1。问题是程序跳过前9个正方形(不透明度<1)并绘制最后一个正方形(不透明度=1)。我相信我的延迟可能有问题

下面是我的示例代码:

<!DOCTYPE HTML>  

<html>
    <head>
        <style>
            #map {
                height: 100%;
            }
            #tabs{
                width: 100%;
            }      
            html, body {
                height: 100%;
                margin: 0;
                padding: 0;
            }
        </style>
    </head>

    <body>      
        <script>
        function initMap() {
            var map = new google.maps.Map(document.getElementById('map'), {
                zoom: 11,
                center: {lat: 33.678, lng: -116.243},
                mapTypeId: 'terrain'
            });
            for(i = 0.1; i < 1; i+=0.1){
                setTimeout(function(){
                    var rectangle = new google.maps.Rectangle({
                        strokeColor: '#FF0000',
                        strokeOpacity: 0.8,
                        strokeWeight: 2,
                        fillColor: '#FF0000',
                        fillOpacity: i,
                        map: map,
                        bounds: {
                        north: 33.685,
                        south: 33.671,
                        east: -116.234,
                        west: -116.251
                        }
                    });
                }, 1000+i*20000)
            }
        }
        </script> 
        <div id="map"></div>
        <script async defer
        src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
        </script>
    </body>
</html>

#地图{
身高:100%;
}
#标签{
宽度:100%;
}      
html,正文{
身高:100%;
保证金:0;
填充:0;
}
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:11,
中心:{lat:33.678,lng:-116.243},
mapTypeId:'地形'
});
对于(i=0.1;i<1;i+=0.1){
setTimeout(函数(){
var rectangle=new google.maps.rectangle({
strokeColor:“#FF0000”,
笔划不透明度:0.8,
冲程重量:2,
填充颜色:'#FF0000',
我:我,,
地图:地图,
界限:{
北:33.685,
南:33.671,
东:-116.234,
西区:-116.251
}
});
},1000+i*20000)
}
}

我稍微修改了您的代码,并用setInterval()函数实现了它。另外请注意,不需要在循环中创建多边形的新实例,您只需更改多边形选项即可

代码片段:

函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:11,
中心:{lat:33.678,lng:-116.243},
mapTypeId:'地形'
});
var m_不透明度=0.1;
var rectangle=new google.maps.rectangle({
strokeColor:“#FF0000”,
笔划不透明度:0.8,
冲程重量:2,
填充颜色:'#FF0000',
fillOpacity:m_不透明度,
地图:地图,
界限:{
北:33.685,
南:33.671,
东:-116.234,
西区:-116.251
}
});
var m_timer=window.setInterval(函数(){
m_不透明度+=0.1;
if(m_)不透明度