You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
12 lines
4.4 KiB
12 lines
4.4 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define("../../../chunks/tslib.es6 ../../../Viewpoint ../../../core/Accessor ../../../core/has ../../../core/maybe ../../../core/time ../../../core/accessorSupport/decorators/property ../../../core/Logger ../../../core/RandomLCG ../../../core/accessorSupport/decorators/subclass ../../../geometry/Point ../viewpointUtils ./ZoomBox ./actions/Pan ./actions/Pinch ./actions/Rotate".split(" "),function(f,d,x,y,n,z,g,G,H,A,B,k,C,D,E,F){const q=new d({targetGeometry:new B}),r=[0,0];d=class extends x{constructor(b){super(b); |
|
this.animationManager=this._lastEventTimestamp=this._endTimer=null;this.interacting=!1}initialize(){this.pan=new D({navigation:this});this.rotate=new F({navigation:this});this.pinch=new E({navigation:this});this.zoomBox=new C({view:this.view,navigation:this})}destroy(){this.pan=n.destroyMaybe(this.pan);this.rotate=n.destroyMaybe(this.rotate);this.pinch=n.destroyMaybe(this.pinch);this.zoomBox=n.destroyMaybe(this.zoomBox);this.animationManager=null}begin(){this.stop();this._set("interacting",!0)}end(){this._lastEventTimestamp= |
|
performance.now();this._startTimer(250)}async zoom(b,a=this._getDefaultAnchor()){this.begin();if(this.view.constraints.snapToZoom&&this.view.constraints.effectiveLODs)return 1>b?this.zoomIn(a):this.zoomOut(a);this.setViewpoint(a,b,0,[0,0])}async zoomIn(b){var a=this.view;a=a.constraints.snapToNextScale(a.scale);return this._zoomToScale(a,b)}async zoomOut(b){var a=this.view;a=a.constraints.snapToPreviousScale(a.scale);return this._zoomToScale(a,b)}setViewpoint(b,a,c,e){this.begin();this.view.stateManager.state.viewpoint= |
|
this._scaleRotateTranslateViewpoint(this.view.viewpoint,b,a,c,e);this.end()}setViewpointImmediate(b,a=0,c=[0,0],e=this._getDefaultAnchor()){this.view.stateManager.state.viewpoint=this._scaleRotateTranslateViewpoint(this.view.viewpoint,e,b,a,c)}continuousRotateClockwise(){const b=this.view.viewpoint;this.animationManager?.animateContinuous(b,a=>{k.rotateBy(a,a,-1)})}continuousRotateCounterclockwise(){const b=this.view.viewpoint;this.animationManager?.animateContinuous(b,a=>{k.rotateBy(a,a,1)})}resetRotation(){this.view.constraints.rotationEnabled&& |
|
(this.view.rotation=0)}continuousPanLeft(){this._continuousPan([-10,0])}continuousPanRight(){this._continuousPan([10,0])}continuousPanUp(){this._continuousPan([0,10])}continuousPanDown(){this._continuousPan([0,-10])}continuousPanVector({x:b,y:a}){this._continuousPan([10*b,10*a])}stop(){this.pan.stopMomentumNavigation();this.animationManager?.stop();this.end();null!==this._endTimer&&(clearTimeout(this._endTimer),this._endTimer=null,this._set("interacting",!1))}_continuousPan(b){const a=this.view.viewpoint; |
|
this.animationManager?.animateContinuous(a,c=>{k.translateBy(c,c,b);this.view.constraints.constrainByGeometry(c)})}_startTimer(b){return null!==this._endTimer?this._endTimer:this._endTimer=setTimeout(()=>{this._endTimer=null;const a=performance.now()-(this._lastEventTimestamp??0);250>a?this._endTimer=this._startTimer(a):this._set("interacting",!1)},b)}_getDefaultAnchor(){const {size:b,padding:{left:a,right:c,top:e,bottom:h}}=this.view;r[0]=.5*(b[0]-c+a);r[1]=.5*(b[1]-h+e);return r}async _zoomToScale(b, |
|
a=this._getDefaultAnchor()){const {view:c}=this,{constraints:e,scale:h,viewpoint:l,size:t,padding:u}=c,m=e.canZoomInTo(b),v=e.canZoomOutTo(b);if(!(b<h&&!m||b>h&&!v))return k.padAndScaleAndRotateBy(q,l,b/h,0,a,t,u),e.constrainByGeometry(q),c.goTo(q,{animate:!0,animationMode:"always",duration:z.Milliseconds(y("mapview-essential-goto-duration")),pickClosestTarget:!1})}_scaleRotateTranslateViewpoint(b,a,c,e,h){var {view:l}=this;const {size:t,padding:u,constraints:m,scale:v,viewpoint:w}=l;var p=v*c;l= |
|
m.canZoomInTo(p);p=m.canZoomOutTo(p);if(1>c&&!l||1<c&&!p)c=1;k.translateBy(w,w,h);k.padAndScaleAndRotateBy(b,w,c,e,a,t,u);return m.constrainByGeometry(b)}};f.__decorate([g.property()],d.prototype,"animationManager",void 0);f.__decorate([g.property({type:Boolean,readOnly:!0})],d.prototype,"interacting",void 0);f.__decorate([g.property()],d.prototype,"pan",void 0);f.__decorate([g.property()],d.prototype,"pinch",void 0);f.__decorate([g.property()],d.prototype,"rotate",void 0);f.__decorate([g.property()], |
|
d.prototype,"view",void 0);f.__decorate([g.property()],d.prototype,"zoomBox",void 0);return d=f.__decorate([A.subclass("esri.views.2d.navigation.MapViewNavigation")],d)}); |