2012-02-09 5 views
2

私はマップコンテナDIVを持っています。それを#mapcontainerと呼ぶことができます。Google MapコンテナのjQueryアニメーションの高さ

私はjQueryを使ってその高さをアニメーション化:

$("#mapcontainer").animate({height: +=200px}, 500); 

私はマップ・コンテナのサイズが変更された場合、Googleマップを使用してサイズを変更するようにトリガする必要があることを知っている:

google.maps.event.trigger(map, 'resize'); 

今明白なことですアニメーションのコールバックでこれを行う:

$("#mapcontainer").animate({height: +=200px}, 500, "linear", function(){ 
    google.maps.event.trigger(map, 'resize'); 
}); 

しかし、これはスムーズに見えず、マップはちょうどアニメーションが完了した後、高さにジャンプします。

アニメーションが実行されているときに地図のサイズを変更できるため、地図がスムーズに移行しますか?

+0

アニメーションが完了した後でイベントをトリガーします。これは良い解決策ではありませんが、アニメーションが実行されているときにsetIntervalを使用して1ミリ秒ごとにトリガーすることができます。多分それは遅れをとるだろう、と私は最高の実用的な解決策ではないと言った。 –

+0

@SimonEdström - ありがとう私はこれを行って行きます。私はこれがどうなるかを教えてくれるでしょう – Brady

+0

@SimonEdström - http://jsbin.com/obitud/3/editを見てください。代わりに、更新を100ミリ秒に設定できました。とにかくタイルの一部が既に折り畳みの下にあるので、少し余裕があります。 – Brady

答えて

2

アニメーションが完了した後でイベントをトリガーすると、それが問題だと思います。

これは良い解決策ではありませんが、アニメーションが実行されているときにsetIntervalを使用してイベントを1msごとにトリガーすることができます。多分それは遅れをとるだろう、と私は最高の実用的な解決策ではないと言った。

var timer; 

timer = setInterval(function(){ google.maps.event.trigger(map, 'resize')}, 100); 
$("#mapcontainer").animate({height: +=200px}, 500, "linear", function(){ 
    timerMap = clearInterval(timer); 
}); 
関連する問題