roamHelper.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * For geo and graph.
  3. *
  4. * @param {Object} controllerHost
  5. * @param {module:zrender/Element} controllerHost.target
  6. */
  7. function updateViewOnPan(controllerHost, dx, dy) {
  8. var target = controllerHost.target;
  9. var pos = target.position;
  10. pos[0] += dx;
  11. pos[1] += dy;
  12. target.dirty();
  13. }
  14. /**
  15. * For geo and graph.
  16. *
  17. * @param {Object} controllerHost
  18. * @param {module:zrender/Element} controllerHost.target
  19. * @param {number} controllerHost.zoom
  20. * @param {number} controllerHost.zoomLimit like: {min: 1, max: 2}
  21. */
  22. function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {
  23. var target = controllerHost.target;
  24. var zoomLimit = controllerHost.zoomLimit;
  25. var pos = target.position;
  26. var scale = target.scale;
  27. var newZoom = controllerHost.zoom = controllerHost.zoom || 1;
  28. newZoom *= zoomDelta;
  29. if (zoomLimit) {
  30. var zoomMin = zoomLimit.min || 0;
  31. var zoomMax = zoomLimit.max || Infinity;
  32. newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);
  33. }
  34. var zoomScale = newZoom / controllerHost.zoom;
  35. controllerHost.zoom = newZoom; // Keep the mouse center when scaling
  36. pos[0] -= (zoomX - pos[0]) * (zoomScale - 1);
  37. pos[1] -= (zoomY - pos[1]) * (zoomScale - 1);
  38. scale[0] *= zoomScale;
  39. scale[1] *= zoomScale;
  40. target.dirty();
  41. }
  42. exports.updateViewOnPan = updateViewOnPan;
  43. exports.updateViewOnZoom = updateViewOnZoom;