2

この回答に従って、ポリライン上のシンボルのアニメーションを使用しました。これは非常に便利でし た。複数の測地線ポリライン上のシンボルをアニメーション化する

私が欲しいのは、いくつかのポリラインを持ち、1つが選択されたときにアニメーションを生成し、他のポリラインのアニメーションを停止することです。

つまり、上記の方法で開始したら、シンボルを削除してアニメーションを停止したいと思います。

function animateCircle(id) {
    var count = 0;
    offsetId = window.setInterval(function () {
        count = (count+1) % 200;
        id.setOptions({
            icons: [{
                offset: (count/2)+'%'
            }]
        });
    }, 20);
};

このような別の関数を試しましたが、まったく機能しませんでした。

function stopCircle(id) {
    id.setOptions({
        icons: [{
            offset: '0%'
        }]
};

ない:

function stopCircle(id) {
    id.setOptions({
        icons: null
};

ありがとう。

4

2 に答える 2

2

idは、ポリラインの配列へのインデックスです。ポリラインにアクセスするには、polylines [id](つまり、polylines [id].setOptions)を使用する必要があります。

setIntervalによって返される値への参照を保持する必要があるため、タイマーを停止することもできます。

実例

function stopCircle(id) {
    clearInterval(polylines[id].handle);
    polylines[id].polyline.setOptions({
        icons: null});
};

polylines配列に含まれる場所:

    polylines[i] = new Object();
    polylines[i].polyline = polyline;
    polylines[i].handle = animateCircle(i);
于 2013-01-02T14:32:45.500 に答える
1

私にとって「id」はポリラインそのものです。必要なのは、「setInterval」からの出力を保持することです。これは、「clearInterval」の入力である必要があります。これらは2つの機能です:

function animateCircle(id) {
    var count = 0;
    window.clearInterval(id.offsetId);
    id.offsetId = window.setInterval(function () {
        count = (count+1) % 200;
        id.setOptions({
            icons: [{
                offset: (count/2)+'%'
            }]
        });
    }, 20);
};

function stopCircle(id) {
    window.clearInterval(id.offsetId);
    id.setOptions({
        icons: null
    });
};
于 2013-01-05T12:45:05.113 に答える