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 回実行されます。
私は何を間違っていますか?