TrackViewModel.js 2.4 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import{_ as t}from"../../chunks/tslib.es6.js";import{property as i}from"../../core/accessorSupport/decorators/property.js";import"../../core/arrayUtils.js";import"../../core/accessorSupport/ensureType.js";import{subclass as s}from"../../core/accessorSupport/decorators/subclass.js";import r from"../support/GeolocationPositioning.js";const o=15e3;let e=class extends r{constructor(t){super(t),this._watchId=null,this._trackStartingTimeoutId=null,this._settingPosition=null}destroy(){this._stopTracking()}get state(){return this._geolocationUsable?this.view&&!this.view.ready?"disabled":this._settingPosition||null!==this._trackStartingTimeoutId?"waiting":this.tracking?"tracking":"ready":"feature-unsupported"}get tracking(){return null!==this._watchId}start(){"disabled"!==this.state&&"feature-unsupported"!==this.state&&this._startTracking()}stop(){"disabled"!==this.state&&"feature-unsupported"!==this.state&&this._stopTracking()}_stopWatchingPosition(){null!==this._watchId&&(navigator.geolocation.clearWatch(this._watchId),this._watchId=null)}_stopTracking(){this._clearWaitingTimer(),this._stopWatchingPosition(),this._clear()}_startTracking(){this._stopTracking();const t=navigator.geolocation.watchPosition((i=>{this._watchId=t,this._settingPosition=this._setPosition(i).then((t=>{this._clearWaitingTimer();const{view:i,graphic:s}=this;if(i&&i.graphics.remove(s),s){const t=s.clone();this.graphic=t,i&&i.graphics.push(t)}this.emit("track",{position:t})})).catch((t=>{throw this._emitError(t),this._clearWaitingTimer(),t}))}),this._handleWatchPositionError.bind(this),this.geolocationOptions);this._trackStartingTimeoutId=setTimeout((()=>{this._trackStartingTimeoutId=null}),o)}_handleWatchPositionError(t){this._emitError(t),this._stopTracking()}_clearWaitingTimer(){clearTimeout(this._trackStartingTimeoutId),this._trackStartingTimeoutId=null,this._settingPosition=null}_emitError(t){this.emit("track-error",{error:t})}};t([i()],e.prototype,"_watchId",void 0),t([i()],e.prototype,"_trackStartingTimeoutId",void 0),t([i()],e.prototype,"_settingPosition",void 0),t([i({readOnly:!0})],e.prototype,"state",null),t([i({readOnly:!0})],e.prototype,"tracking",null),t([i()],e.prototype,"start",null),t([i()],e.prototype,"stop",null),e=t([s("esri.widgets.Track.TrackViewModel")],e);const a=e;export{a as default};