2

一定の時間間隔の後に関数を呼び出すためにこのコードを書いていますが、関数は機能を実行していません。通常、関数 pus() を呼び出しているときは実行されていますが、setInterval では機能していません。解決策を教えてください。

 var ltnlg = null;
 var flightPlanCoordinates = [];
 var nl2 = 10.9646;
 var ng2 = 72.8787;
 var lt2, ln2;
 var ltnlg = null;

 function lin() {
           flightPlanCoordinates = [
     new google.maps.LatLng(29.0167, 77.3833),
     new google.maps.LatLng(21.7679, 78.8718),
     new google.maps.LatLng(18.9647, 72.8258)
     ];

          var flightPath = new google.maps.Polyline({
               path: flightPlanCoordinates,
               strokeColor: "#FF0000",
               strokeOpacity: 1.0,
               strokeWeight: 2
               });

           flightPath.setMap(map);
           pl = new google.maps.Polyline();
           //  window.setInterval("pus()", 10000);
          pus();

           }
       }

       function pus() {



           ltnlg = new google.maps.LatLng(nl2, ng2);
           flightPlanCoordinates.push(ltnlg);
           lt2 = nl2;
            n12 = lt2 + 0.0660;
          ln2 = ng2;
          ng2 = ln2 + 0.0660;

       }   
4

2 に答える 2

2

コールバックを文字列として渡さないでください。

window.setInterval(pus, 10000);

または、いくつかのパラメーターを渡したい場合

window.setInterval(function() {
    pus(a, b, c);
}, 10000);
于 2013-01-09T11:11:29.757 に答える
1

ここでの質問は、「なぜこれが setInterval で機能しなかったのか」ではなく、「なぜ関数内から機能するのか」であるべきです。

ポリゴンの描画は非同期プロセスであると思いますpus()。関数内から呼び出すと終了していないため、変更が反映されflightPlanCoordinatesます。

しかし、変更されたパスをポリラインに適用する正しい方法は、次のように呼び出すことですpus()

flightPath.setPath(flightPlanCoordinates);

(注:flightPath外部からアクセスできるようにするには、グローバルにする必要がありますlin())

于 2013-01-09T11:39:05.010 に答える