0

setTimeout の使用に問題があります。私はそれを何度も使用してきましたが、常に期待どおりに機能します。コードを別の関数に入れても機能しますが、この場合は奇妙な動作をします。

これがまさにコードです:

RoutePatternPoint.prototype.showOnMap = function(map)
{
    var that = this;
    google.maps.event.addListener(this.marker, "click", function(event)
    {
        window.setTimeout(function(){

            if(RoutePatternPoint.markerDoubleClickFix === false) { doSomething(); }

             RoutePatternPoint.markerDoubleClickFix = false;

          },350);
    }); 

    google.maps.event.addListener(this.marker, "dblclick", function(event)
    {
         RoutePatternPoint.markerDoubleClickFix = true;

    });
}

問題は、シングル クリック イベントとダブル クリック イベントが実装されている場合、Google マップ API v3 にバグがあり、両方が実行されることです。

したがって、解決策は、シングル クリック イベントを遅くし、ダブル クリック イベントが実行されるかどうかを確認することです。ダブルクリック イベントが実行されると、シングル クリック イベントが中断されます。

残念ながら、私のコードは思い通りに動作していないため、アラート関数を作成して何が起こるかを確認することにしました。何だと思う?シングル クリック イベント内の setTimeout 関数が 2 回実行されます。

私は何を間違っていますか?

4

1 に答える 1