D3 で作成されたマップの上にズーム ボタンを実装しようとしています - 基本的に Google マップで動作するように。ズーム イベントは、次を使用してプログラムでディスパッチできます。
d3ZoomBehavior.scale(myNewScale);
d3ZoomBehavior.event(myContainer);
マップは、ビューの現在の翻訳を使用してズームします。ズーム ボタンを使用する場合、焦点 (ズームの中心) は移動ではなく、ビュー ポートの中心になります。スクロール ホイールを使用してズームする場合は、使用するオプションがありますがzoom.center
、独自のイベントをディスパッチする場合、これは明らかに効果がありません。
新しいスケーリング係数とビューポートの中心を考慮して、次の変換を計算する方法について混乱しています。
現在の縮尺、次の縮尺、現在の平行移動、およびマップ ビュー ポートの寸法がわかっている場合、ビュー ポートの中心が変わらないように次の平行移動を計算するにはどうすればよいですか?