define(['dojo/_base/lang', 'dojo/_base/array', "dojo/_base/declare" ], function (lang, array, declare ){ return declare("FlightTool",[], { // 飞行工具类 _map: null, _route:null, ispause:false, startTime:null, frame_handler:null, constructor: function (options) { var self = this; self._map = options.map; /** * 帧处理者 **/ self.frame_handler = function () { self._route.thistime = new Date().getTime(); self._route.timespan = 0; self._route.nexttime = 0.001; self._route.timespan = (self._route.thistime - self.startTime) / 1000; self._route.lasttime = self._route.lasttime + self._route.timespan; if (self._route.lasttime > self._route.timesum) { self._route.lasttime = 0; } self._route.nexttime = self._route.lasttime + self._route.timespan * 2; if (self._route.nexttime > self._route.timesum) { self._route.nexttime = self._route.timesum; } self._route.point = self._route.spline.evaluate(self._route.lasttime); self._route.point2 = self._route.spline.evaluate(self._route.nexttime); self._route.heading = self.getHeadingRadian(self.ctsn3ToDegree(self._route.point), self.ctsn3ToDegree(self._route.point2)); self._route.pitch = Cesium.Cartesian3.angleBetween(self._route.point, self._route.point2)-Math.PI/12; self._map.camera.lookAt(self._route.point, new Cesium.HeadingPitchRange(self._route.heading, self._route.pitch, 100.0)); self.startTime = self._route.thistime; } }, startFly:function () { this.stopFly(); this.ispause = false; var points = []; for(var i=0;i