Scale.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. //CLASS: 缩放控制类
  2. function Scale(layer) {
  3. this.layer = layer;
  4. this.div = layer.div;
  5. this.active();
  6. this.mark=document.getElementById("mark");
  7. this.top="85px";
  8. this.top3d="85px";
  9. };
  10. Scale.prototype.wheelChange = function(e) {
  11. var type=e.type;
  12. var delta;
  13. if (type == 'DOMMouseScroll' || type == 'mousewheel') {
  14. delta = (e.wheelDelta) ? (e.wheelDelta / 120)*2 : -(e.detail || 0) / 3*2;
  15. }
  16. var deltalX = this.layer.size.w/2 - (e.offsetX || e.layerX);
  17. var deltalY = (e.offsetY || e.layerY) - this.layer.size.h/2;
  18. var px = {x: (e.offsetX || e.layerX), y:(e.offsetY || e.layerY)};
  19. var zoomPoint = this.layer.getPositionFromPx(px);
  20. var zoom = this.layer.zoom + delta;
  21. if(zoom <= 16) {
  22. return;
  23. }
  24. var markpy=parseInt(this.mark.style.marginTop);
  25. markpy-=delta;
  26. if(markpy<MixMark)
  27. {
  28. markpy=MixMark;
  29. }
  30. else if(markpy>MaxMark)
  31. {
  32. markpy=MaxMark;
  33. }
  34. mark.style.marginTop=markpy+"px";
  35. this.top=mark.style.marginTop;
  36. var newRes = this.layer.getResFromZoom(zoom);
  37. var center = new CanvasSketch.Position(zoomPoint.x + deltalX * newRes, zoomPoint.y + deltalY * newRes);
  38. this.layer.moveTo(zoom, center);
  39. this.layer.renderer.autoRedraw();
  40. CanvasSketch.stopEventBubble(e);
  41. };
  42. Scale.prototype.DOMScroll = function(e) {
  43. CanvasSketch.stopEventBubble(e);
  44. };
  45. Scale.prototype.Events = [["mousewheel", Scale.prototype.wheelChange],["DOMMouseScroll", Scale.prototype.wheelChange]];
  46. Scale.prototype.active = function () {
  47. this.div.addEventListener("mousewheel", Scale.prototype.wheelChange.bind(this), true);
  48. this.div.addEventListener("DOMMouseScroll", Scale.prototype.wheelChange.bind(this), true);
  49. };