nrct-gps-track / dist /leaflet.trackplayback.js.map
thanthamky's picture
Upload 50 files
3bc64f7 verified
raw
history blame contribute delete
No virus
49.9 kB
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external {\"root\":\"L\",\"commonjs\":\"leaflet\",\"commonjs2\":\"leaflet\",\"amd\":\"leaflet\"}","webpack:///./src/leaflet.trackplayback/util.js","webpack:///./src/leaflet.trackplayback/track.js","webpack:///./src/leaflet.trackplayback/trackcontroller.js","webpack:///./src/leaflet.trackplayback/clock.js","webpack:///./src/leaflet.trackplayback/tracklayer.js","webpack:///./src/leaflet.trackplayback/draw.js","webpack:///./src/leaflet.trackplayback/trackplayback.js","webpack:///./src/leaflet.trackplayback/index.js"],"names":["root","factory","exports","module","require","define","amd","a","i","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isArray","arr","Array","toString","Track","external_root_L_commonjs_leaflet_commonjs2_leaflet_amd_leaflet_default","Class","extend","initialize","trackData","options","setOptions","this","forEach","item","isOrigin","_trackPoints","_timeTick","_update","addTrackPoint","trackPoint","len","length","_addTrackPoint","getTimes","times","push","time","getStartTrackPoint","getEndTrackPoint","getTrackPointByTime","_getCalculateTrackPointByTime","endpoint","startPt","endPt","left","right","parseInt","t0","t1","p0","p1","point","lng","lat","distanceTo","v","sinx","y","cosx","x","step","dir","Math","PI","asin","undefined","getTrackPointsBeforeTime","tpoints","_sortTrackPointsByTime","_updatetimeTick","j","tmp","TrackController","tracks","draw","_tracks","addTrack","_draw","_updateTime","getMinTime","_minTime","getMaxTime","_maxTime","track","Error","drawTracksByTime","clear","tps","drawTrack","stime","etime","Clock","includes","Mixin","Events","speed","maxSpeed","trackController","_trackController","_endTime","_curTime","_speed","_maxSpeed","_intervalID","_lastFpsUpdateTime","start","Util","requestAnimFrame","_tick","stop","cancelAnimFrame","rePlaying","slowSpeed","quickSpeed","getSpeed","getCurTime","getStartTime","getEndTime","isPlaying","setCursor","fire","setSpeed","_caculatefpsTime","now","Date","isPause","stepTime","pow","TrackLayer","Renderer","padding","onAdd","map","_container","DomUtil","getPane","pane","appendChild","_ctx","getContext","onRemove","remove","getContainer","getBounds","_bounds","_map","_animatingZoom","b","container","size","getSize","Browser","retina","setPosition","min","width","height","style","scale","translate","Draw","trackPointOptions","isDraw","useCanvas","stroke","color","fill","fillColor","opacity","radius","trackLineOptions","weight","targetOptions","useImg","imgUrl","showText","toolTipOptions","offset","direction","permanent","_showTrackPoint","_showTrackLine","on","_onmousemoveEvt","_trackLayer","addTo","_trackLayerUpdate","_canvas","_bufferTracks","_trackPointFeatureGroup","featureGroup","img","Image","onload","_targetImg","onerror","src","update","trackpoints","_drawTrack","showTrackPoint","hideTrackPoint","showTrackLine","hideTrackLine","off","hasLayer","removeLayer","_clearLayer","element","index","e","layerPoint","leni","tpoint","_getLayerPoint","_opentoolTip","_tooltip","cursor","trackpoint","latlng","latLng","tooltip","setLatLng","setContent","_getTooltipText","_drawTrackLine","targetPoint","_drawShipImage","_drawShipCanvas","_drawtxt","_drawTrackPointsCanvas","_drawTrackPointsSvg","tp0","save","beginPath","moveTo","tpi","lineTo","globalAlpha","strokeStyle","lineWidth","fillStyle","restore","latLngToLayerPoint","arc","cricleMarker","circleMarker","bindTooltip","addLayer","text","font","textAlign","textBaseline","fillText","rotate","w","h","dh","closePath","drawImage","targetobj","content","info","join","bounds","clearRect","clearLayers","[object Object]","TrackPlayBack","data","drawOptions","_initTracks","clock","clockOptions","dispose","trackplayback"],"mappings":"CAAA,SAAAA,EAAAC,GACA,oBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,EAAAG,QAAA,iBACA,sBAAAC,eAAAC,IACAD,QAAA,WAAAJ,OACA,CACA,IAAAM,EAAA,iBAAAL,QAAAD,EAAAG,QAAA,YAAAH,EAAAD,EAAA,GACA,QAAAQ,KAAAD,GAAA,iBAAAL,gBAAAF,GAAAQ,GAAAD,EAAAC,IAPA,CASCC,OAAA,SAAAC,GACD,mBCTA,IAAAC,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAX,QAGA,IAAAC,EAAAQ,EAAAE,IACAL,EAAAK,EACAC,GAAA,EACAZ,YAUA,OANAa,EAAAF,GAAAG,KAAAb,EAAAD,QAAAC,IAAAD,QAAAU,GAGAT,EAAAW,GAAA,EAGAX,EAAAD,QA0DA,OArDAU,EAAAK,EAAAF,EAGAH,EAAAM,EAAAP,EAGAC,EAAAO,EAAA,SAAAjB,EAAAkB,EAAAC,GACAT,EAAAU,EAAApB,EAAAkB,IACAG,OAAAC,eAAAtB,EAAAkB,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CT,EAAAe,EAAA,SAAAzB,GACA,oBAAA0B,eAAAC,aACAN,OAAAC,eAAAtB,EAAA0B,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAtB,EAAA,cAAiD4B,OAAA,KAQjDlB,EAAAmB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAlB,EAAAkB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFAvB,EAAAe,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAlB,EAAAO,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAtB,EAAA0B,EAAA,SAAAnC,GACA,IAAAkB,EAAAlB,KAAA8B,WACA,WAA2B,OAAA9B,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAS,EAAAO,EAAAE,EAAA,IAAAA,GACAA,GAIAT,EAAAU,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD5B,EAAA+B,EAAA,GAIA/B,IAAAgC,EAAA,mBClFAzC,EAAAD,QAAAQ,2DCAO,SAAAmC,EAAAC,GACP,OAAAC,MAAAF,QAAAE,MAAAF,QAAAC,GAAA,mBAAAvB,OAAAkB,UAAAO,SAAAhC,KAAA8B,GCQO,MAAAG,EAAcC,EAAA3C,EAAC4C,MAAAC,QAEtBC,WAAA,SAAAC,KAAAC,GACIL,EAAA3C,EAACiD,WAAAC,KAAAF,GAELD,EAAAI,QAAAC,IAEAA,EAAAC,UAAA,IAEAH,KAAAI,aAAAP,EACAG,KAAAK,aACAL,KAAAM,WAGAC,cAAA,SAAAC,GACA,GAAQpB,EAAOoB,GACf,QAAAzD,EAAA,EAAA0D,EAAAD,EAAAE,OAA8C3D,EAAA0D,EAAS1D,IACvDiD,KAAAO,cAAAC,EAAAzD,IAGAiD,KAAAW,eAAAH,IAGAI,SAAA,WACA,IAAAC,KACA,QAAA9D,EAAA,EAAA0D,EAAAT,KAAAI,aAAAM,OAAmD3D,EAAA0D,EAAS1D,IAC5D8D,EAAAC,KAAAd,KAAAI,aAAArD,GAAAgE,MAEA,OAAAF,GAGAG,mBAAA,WACA,OAAAhB,KAAAI,aAAA,IAGAa,iBAAA,WACA,OAAAjB,KAAAI,aAAAJ,KAAAI,aAAAM,OAAA,IAGAQ,oBAAA,SAAAH,GACA,OAAAf,KAAAI,aAAAJ,KAAAK,UAAAU,KAGAI,8BAAA,SAAAJ,GAEA,IAAAK,EAAApB,KAAAkB,oBAAAH,GACAM,EAAArB,KAAAgB,qBACAM,EAAAtB,KAAAiB,mBACAJ,EAAAb,KAAAY,WACA,GAAAG,EAAAM,EAAAN,QAAAO,EAAAP,KAAA,OACA,IAEAlC,EAFA0C,EAAA,EACAC,EAAAX,EAAAH,OAAA,EAGA,GAAAa,IAAAC,EACA,OAAAJ,EAGA,KAAAI,EAAAD,GAAA,GAEAR,EAAAF,EADAhC,EAAA4C,UAAAF,EAAAC,GAAA,IACAD,EAAA1C,EACA2C,EAAA3C,EAGA,IAAA6C,EAAAb,EAAAU,GACAI,EAAAd,EAAAW,GACAlD,EAAAyC,EACAa,EAAA5B,KAAAkB,oBAAAQ,GACAG,EAAA7B,KAAAkB,oBAAAS,GACAN,EAAc5B,EAAA3C,EAACgF,MAAAF,EAAAG,IAAAH,EAAAI,KACfV,EAAY7B,EAAA3C,EAACgF,MAAAD,EAAAE,IAAAF,EAAAG,KACb,IAAA7C,EAAAkC,EAAAY,WAAAX,GAEA,GAAAnC,GAAA,EAEA,OADAiC,EAAAS,EAKA,IAAAK,EAAA/C,GAAAwC,EAAAD,GACAS,GAAAb,EAAAc,EAAAf,EAAAe,GAAAjD,EACAkD,GAAAf,EAAAgB,EAAAjB,EAAAiB,GAAAnD,EACAoD,EAAAL,GAAA5D,EAAAoD,GACAY,EAAAjB,EAAAiB,EAAAC,EAAAF,EACAD,EAAAf,EAAAe,EAAAG,EAAAJ,EAEAK,EAAAlB,EAAAgB,GAAAjB,EAAAiB,EAAA,QAAAG,KAAAC,GAAAD,KAAAE,KAAAR,IAAAM,KAAAC,GAAA,SAAAD,KAAAC,GAAAD,KAAAE,KAAAR,IAAAM,KAAAC,GAeA,OAbAtB,OACAwB,IAAAxB,EAAAoB,MACApB,EAAAoB,OAGApB,GACAW,IAAAO,EACAN,IAAAI,EACAI,MACArC,UAAA,EACAY,QAGAK,GAIAyB,yBAAA,SAAA9B,GACA,IAAA+B,KACA,QAAA/F,EAAA,EAAA0D,EAAAT,KAAAI,aAAAM,OAAmD3D,EAAA0D,EAAS1D,IAC5DiD,KAAAI,aAAArD,GAAAgE,QACA+B,EAAAhC,KAAAd,KAAAI,aAAArD,IAIA,IAAAuE,EAAAtB,KAAAmB,8BAAAJ,GAIA,OAHAO,GACAwB,EAAAhC,KAAAQ,GAEAwB,GAGAnC,eAAA,SAAAH,GACAA,EAAAL,UAAA,EACAH,KAAAI,aAAAU,KAAAN,GACAR,KAAAM,WAGAA,QAAA,WACAN,KAAA+C,yBACA/C,KAAAgD,mBAIAD,uBAAA,WACA,IAAAtC,EAAAT,KAAAI,aAAAM,OACA,QAAA3D,EAAA,EAAmBA,EAAA0D,EAAS1D,IAC5B,QAAAkG,EAAA,EAAqBA,EAAAxC,EAAA,EAAA1D,EAAiBkG,IACtC,GAAAjD,KAAAI,aAAA6C,GAAAlC,KAAAf,KAAAI,aAAA6C,EAAA,GAAAlC,KAAA,CACA,IAAAmC,EAAAlD,KAAAI,aAAA6C,EAAA,GACAjD,KAAAI,aAAA6C,EAAA,GAAAjD,KAAAI,aAAA6C,GACAjD,KAAAI,aAAA6C,GAAAC,IAOAF,gBAAA,WACAhD,KAAAK,aACA,QAAAtD,EAAA,EAAA0D,EAAAT,KAAAI,aAAAM,OAAmD3D,EAAA0D,EAAS1D,IAC5DiD,KAAAK,UAAAL,KAAAI,aAAArD,GAAAgE,MAAAhE,KCjJOoG,EAAwB1D,EAAA3C,EAAC4C,MAAAC,QAEhCC,WAAA,SAAAwD,KAAAC,EAAAvD,GACIL,EAAA3C,EAACiD,WAAAC,KAAAF,GAELE,KAAAsD,WACAtD,KAAAuD,SAAAH,GAEApD,KAAAwD,MAAAH,EAEArD,KAAAyD,eAGAC,WAAA,WACA,OAAA1D,KAAA2D,UAGAC,WAAA,WACA,OAAA5D,KAAA6D,UAGAN,SAAA,SAAAO,GACA,GAAQ1E,EAAO0E,GACf,QAAA/G,EAAA,EAAA0D,EAAAqD,EAAApD,OAAyC3D,EAAA0D,EAAS1D,IAClDiD,KAAAuD,SAAAO,EAAA/G,QAEK,MAAA+G,aAA2BtE,GAIhC,UAAAuE,MAAA,0EAHA/D,KAAAsD,QAAAxC,KAAAgD,GACA9D,KAAAyD,gBAMAO,iBAAA,SAAAjD,GACAf,KAAAwD,MAAAS,QACA,QAAAlH,EAAA,EAAA0D,EAAAT,KAAAsD,QAAA5C,OAA8C3D,EAAA0D,EAAS1D,IAAA,CACvD,IACAmH,EADAlE,KAAAsD,QAAAvG,GACA8F,yBAAA9B,GACAmD,KAAAxD,QAAAV,KAAAwD,MAAAW,UAAAD,KAIAT,YAAA,WACAzD,KAAA2D,SAAA3D,KAAAsD,QAAA,GAAAtC,qBAAAD,KACAf,KAAA6D,SAAA7D,KAAAsD,QAAA,GAAArC,mBAAAF,KACA,QAAAhE,EAAA,EAAA0D,EAAAT,KAAAsD,QAAA5C,OAA8C3D,EAAA0D,EAAS1D,IAAA,CACvD,IAAAqH,EAAApE,KAAAsD,QAAAvG,GAAAiE,qBAAAD,KACAsD,EAAArE,KAAAsD,QAAAvG,GAAAkE,mBAAAF,KACAqD,EAAApE,KAAA2D,WACA3D,KAAA2D,SAAAS,GAEAC,EAAArE,KAAA6D,WACA7D,KAAA6D,SAAAQ,OC9DOC,EAAc7E,EAAA3C,EAAC4C,MAAAC,QAEtB4E,SAAY9E,EAAA3C,EAAC0H,MAAAC,OAEb3E,SAGA4E,MAAA,GAEAC,SAAA,IAGA/E,WAAA,SAAAgF,EAAA9E,GACIL,EAAA3C,EAACiD,WAAAC,KAAAF,GAELE,KAAA6E,iBAAAD,EACA5E,KAAA8E,SAAA9E,KAAA6E,iBAAAjB,aACA5D,KAAA+E,SAAA/E,KAAA6E,iBAAAnB,aACA1D,KAAAgF,OAAAhF,KAAAF,QAAA4E,MACA1E,KAAAiF,UAAAjF,KAAAF,QAAA6E,SACA3E,KAAAkF,YAAA,KACAlF,KAAAmF,mBAAA,GAGAC,MAAA,WACApF,KAAAkF,cACAlF,KAAAkF,YAAuBzF,EAAA3C,EAACuI,KAAAC,iBAAAtF,KAAAuF,MAAAvF,QAGxBwF,KAAA,WACAxF,KAAAkF,cACIzF,EAAA3C,EAACuI,KAAAI,gBAAAzF,KAAAkF,aACLlF,KAAAkF,YAAA,KACAlF,KAAAmF,mBAAA,IAGAO,UAAA,WACA1F,KAAAwF,OACAxF,KAAA+E,SAAA/E,KAAA6E,iBAAAnB,aACA1D,KAAAoF,SAGAO,UAAA,WACA3F,KAAAgF,OAAAhF,KAAAgF,QAAA,EAAAhF,KAAAgF,OAAAhF,KAAAgF,OAAA,EACAhF,KAAAkF,cACAlF,KAAAwF,OACAxF,KAAAoF,UAIAQ,WAAA,WACA5F,KAAAgF,OAAAhF,KAAAgF,QAAAhF,KAAAiF,UAAAjF,KAAAgF,OAAAhF,KAAAgF,OAAA,EACAhF,KAAAkF,cACAlF,KAAAwF,OACAxF,KAAAoF,UAIAS,SAAA,WACA,OAAA7F,KAAAgF,QAGAc,WAAA,WACA,OAAA9F,KAAA+E,UAGAgB,aAAA,WACA,OAAA/F,KAAA6E,iBAAAnB,cAGAsC,WAAA,WACA,OAAAhG,KAAA6E,iBAAAjB,cAGAqC,UAAA,WACA,QAAAjG,KAAAkF,aAGAgB,UAAA,SAAAnF,GACAf,KAAA+E,SAAAhE,EACAf,KAAA6E,iBAAAb,iBAAAhE,KAAA+E,UACA/E,KAAAmG,KAAA,QACApF,KAAAf,KAAA+E,YAIAqB,SAAA,SAAA1B,GACA1E,KAAAgF,OAAAN,EACA1E,KAAAkF,cACAlF,KAAAwF,OACAxF,KAAAoF,UAKAiB,iBAAA,SAAAC,GACA,IAAAvF,EASA,OAPAA,EADA,IAAAf,KAAAmF,mBACA,EAEAmB,EAAAtG,KAAAmF,mBAEAnF,KAAAmF,mBAAAmB,EAEAvF,GAAA,KAIAwE,MAAA,WACA,IAAAe,GAAA,IAAAC,KAEAC,GAAA,EACAC,EAFAzG,KAAAqG,iBAAAC,GAEA7D,KAAAiE,IAAA,EAAA1G,KAAAgF,OAAA,GACAhF,KAAA+E,UAAA0B,EACAzG,KAAA+E,UAAA/E,KAAA8E,WACA9E,KAAA+E,SAAA/E,KAAA8E,SACA0B,GAAA,GAEAxG,KAAA6E,iBAAAb,iBAAAhE,KAAA+E,UACA/E,KAAAmG,KAAA,QACApF,KAAAf,KAAA+E,WAEAyB,IAAAxG,KAAAkF,YAAqCzF,EAAA3C,EAACuI,KAAAC,iBAAAtF,KAAAuF,MAAAvF,UCzH/B2G,EAAmBlH,EAAA3C,EAAC8J,SAAAjH,QAE3BC,WAAA,SAAAE,GACIL,EAAA3C,EAAC8J,SAAA5H,UAAAY,WAAArC,KAAAyC,KAAAF,GACLE,KAAAF,QAAA+G,QAAA,IAGAC,MAAA,SAAAC,GACA/G,KAAAgH,WAAsBvH,EAAA3C,EAACmK,QAAAvI,OAAA,kCAEvBqI,EAAAG,QAAAlH,KAAAF,QAAAqH,MACAC,YAAApH,KAAAgH,YAEAhH,KAAAqH,KAAArH,KAAAgH,WAAAM,WAAA,MAEAtH,KAAAM,WAGAiH,SAAA,SAAAR,GACItH,EAAA3C,EAACmK,QAAAO,OAAAxH,KAAAgH,aAGLS,aAAA,WACA,OAAAzH,KAAAgH,YAGAU,UAAA,WACA,OAAA1H,KAAA2H,SAGArH,QAAA,WACA,IAAAN,KAAA4H,KAAAC,iBAAA7H,KAAA2H,QAAA,CAIIlI,EAAA3C,EAAC8J,SAAA5H,UAAAsB,QAAA/C,KAAAyC,MAEL,IAAA8H,EAAA9H,KAAA2H,QAEAI,EAAA/H,KAAAgH,WAEAgB,EAAAF,EAAAG,UAEAzK,EAAYiC,EAAA3C,EAACoL,QAAAC,OAAA,IAET1I,EAAA3C,EAACmK,QAAAmB,YAAAL,EAAAD,EAAAO,KAGLN,EAAAO,MAAA9K,EAAAwK,EAAA1F,EACAyF,EAAAQ,OAAA/K,EAAAwK,EAAA5F,EACA2F,EAAAS,MAAAF,MAAAN,EAAA1F,EAAA,KACAyF,EAAAS,MAAAD,OAAAP,EAAA5F,EAAA,KAEQ3C,EAAA3C,EAACoL,QAAAC,QACTnI,KAAAqH,KAAAoB,MAAA,KAIAzI,KAAAqH,KAAAqB,WAAAZ,EAAAO,IAAA/F,GAAAwF,EAAAO,IAAAjG,GAGApC,KAAAmG,KAAA,cCxDOwC,EAAalJ,EAAA3C,EAAC4C,MAAAC,QAErBiJ,mBACAC,QAAA,EACAC,WAAA,EACAC,QAAA,EACAC,MAAA,UACAC,MAAA,EACAC,UAAA,UACAC,QAAA,GACAC,OAAA,GAEAC,kBACAR,QAAA,EACAE,QAAA,EACAC,MAAA,UACAM,OAAA,EACAL,MAAA,EACAC,UAAA,OACAC,QAAA,IAEAI,eACAC,QAAA,EACAC,OAAA,+BACAC,UAAA,EACApB,MAAA,EACAC,OAAA,GACAS,MAAA,OACAE,UAAA,WAEAS,gBACAC,QAAA,KACAC,UAAA,MACAC,WAAA,GAGAlK,WAAA,SAAAmH,EAAAjH,GAyBA,GAxBIL,EAAA3C,EAAC6C,OAAAK,KAAA4I,kBAAA9I,EAAA8I,mBACDnJ,EAAA3C,EAAC6C,OAAAK,KAAAqJ,iBAAAvJ,EAAAuJ,kBACD5J,EAAA3C,EAAC6C,OAAAK,KAAAuJ,cAAAzJ,EAAAyJ,eACD9J,EAAA3C,EAAC6C,OAAAK,KAAA2J,eAAA7J,EAAA6J,gBAEL3J,KAAA+J,gBAAA/J,KAAA4I,kBAAAC,OACA7I,KAAAgK,eAAAhK,KAAAqJ,iBAAAR,OAEA7I,KAAA4H,KAAAb,EACA/G,KAAA4H,KAAAqC,GAAA,YAAAjK,KAAAkK,gBAAAlK,MAEAA,KAAAmK,aAAA,IAA2BxD,GAAUyD,MAAArD,GACrC/G,KAAAmK,YAAAF,GAAA,SAAAjK,KAAAqK,kBAAArK,MAEAA,KAAAsK,QAAAtK,KAAAmK,YAAA1C,eACAzH,KAAAqH,KAAArH,KAAAsK,QAAAhD,WAAA,MAEAtH,KAAAuK,iBAEAvK,KAAA4I,kBAAAE,YACA9I,KAAAwK,wBAAqC/K,EAAA3C,EAAC2N,iBAAAL,MAAArD,IAItC/G,KAAAuJ,cAAAC,OAAA,CACA,MAAAkB,EAAA,IAAAC,MACAD,EAAAE,OAAA,MACA5K,KAAA6K,WAAAH,IAEAA,EAAAI,QAAA,MACA,UAAA/G,MAAA,qBAEA2G,EAAAK,IAAA/K,KAAAuJ,cAAAE,SAIAuB,OAAA,WACAhL,KAAAqK,qBAGAlG,UAAA,SAAA8G,GACAjL,KAAAuK,cAAAzJ,KAAAmK,GACAjL,KAAAkL,WAAAD,IAGAE,eAAA,WACAnL,KAAA+J,iBAAA,EACA/J,KAAAgL,UAGAI,eAAA,WACApL,KAAA+J,iBAAA,EACA/J,KAAAgL,UAGAK,cAAA,WACArL,KAAAgK,gBAAA,EACAhK,KAAAgL,UAGAM,cAAA,WACAtL,KAAAgK,gBAAA,EACAhK,KAAAgL,UAGAxD,OAAA,WACAxH,KAAAuK,iBACAvK,KAAAmK,YAAAoB,IAAA,SAAAvL,KAAAqK,kBAAArK,MACAA,KAAA4H,KAAA2D,IAAA,YAAAvL,KAAAkK,gBAAAlK,MACAA,KAAA4H,KAAA4D,SAAAxL,KAAAmK,cACAnK,KAAA4H,KAAA6D,YAAAzL,KAAAmK,aAEAnK,KAAA4H,KAAA4D,SAAAxL,KAAAwK,0BACAxK,KAAA4H,KAAA6D,YAAAzL,KAAAwK,0BAIAvG,MAAA,WACAjE,KAAA0L,cACA1L,KAAAuK,kBAGAF,kBAAA,WACArK,KAAAuK,cAAA7J,SACAV,KAAA0L,cACA1L,KAAAuK,cAAAtK,QAAA,SAAA0L,EAAAC,GACA5L,KAAAkL,WAAAS,IACO/M,KAAAoB,SAIPkK,gBAAA,SAAA2B,GACA,IAAA7L,KAAA+J,gBACA,OAEA,IAAAjI,EAAA+J,EAAAC,WACA,GAAA9L,KAAAuK,cAAA7J,OACA,QAAA3D,EAAA,EAAAgP,EAAA/L,KAAAuK,cAAA7J,OAAuD3D,EAAAgP,EAAUhP,IACjE,QAAAkG,EAAA,EAAAxC,EAAAT,KAAAuK,cAAAxN,GAAA2D,OAA2DuC,EAAAxC,EAASwC,IAAA,CACpE,IAAA+I,EAAAhM,KAAAiM,eAAAjM,KAAAuK,cAAAxN,GAAAkG,IACA,GAAAnB,EAAAG,WAAA+J,IAAAhM,KAAA4I,kBAAAQ,OAEA,YADApJ,KAAAkM,aAAAlM,KAAAuK,cAAAxN,GAAAkG,IAMAjD,KAAA4H,KAAA4D,SAAAxL,KAAAmM,WACAnM,KAAA4H,KAAA6D,YAAAzL,KAAAmM,UAEAnM,KAAAsK,QAAA9B,MAAA4D,OAAA,WAGAF,aAAA,SAAAG,GACArM,KAAA4H,KAAA4D,SAAAxL,KAAAmM,WACAnM,KAAA4H,KAAA6D,YAAAzL,KAAAmM,UAEAnM,KAAAsK,QAAA9B,MAAA4D,OAAA,UACA,IAAAE,EAAiB7M,EAAA3C,EAACyP,OAAAF,EAAArK,IAAAqK,EAAAtK,KAClByK,EAAAxM,KAAAmM,SAAkC1M,EAAA3C,EAAC0P,QAAAxM,KAAA2J,gBACnC6C,EAAAC,UAAAH,GACAE,EAAApC,MAAApK,KAAA4H,MACA4E,EAAAE,WAAA1M,KAAA2M,gBAAAN,KAGAnB,WAAA,SAAAD,GAEAjL,KAAAgK,gBACAhK,KAAA4M,eAAA3B,GAGA,IAAA4B,EAAA5B,IAAAvK,OAAA,GACAV,KAAAuJ,cAAAC,QAAAxJ,KAAA6K,WACA7K,KAAA8M,eAAAD,GAEA7M,KAAA+M,gBAAAF,GAGA7M,KAAAuJ,cAAAG,UACA1J,KAAAgN,eAA0BvL,SAAAoL,EAAArK,QAA0BqK,GAGpD7M,KAAA+J,kBACA/J,KAAA4I,kBAAAE,UACA9I,KAAAiN,uBAAAhC,GAEAjL,KAAAkN,oBAAAjC,KAKA2B,eAAA,SAAA3B,GACA,IAAAnL,EAAAE,KAAAqJ,iBACA8D,EAAAnN,KAAAiM,eAAAhB,EAAA,IACAjL,KAAAqH,KAAA+F,OACApN,KAAAqH,KAAAgG,YAEArN,KAAAqH,KAAAiG,OAAAH,EAAA7K,EAAA6K,EAAA/K,GACA,QAAArF,EAAA,EAAA0D,EAAAwK,EAAAvK,OAA6C3D,EAAA0D,EAAS1D,IAAA,CACtD,IAAAwQ,EAAAvN,KAAAiM,eAAAhB,EAAAlO,IACAiD,KAAAqH,KAAAmG,OAAAD,EAAAjL,EAAAiL,EAAAnL,GAEApC,KAAAqH,KAAAoG,YAAA3N,EAAAqJ,QACArJ,EAAAiJ,SACA/I,KAAAqH,KAAAqG,YAAA5N,EAAAkJ,MACAhJ,KAAAqH,KAAAsG,UAAA7N,EAAAwJ,OACAtJ,KAAAqH,KAAA0B,UAEAjJ,EAAAmJ,OACAjJ,KAAAqH,KAAAuG,UAAA9N,EAAAoJ,UACAlJ,KAAAqH,KAAA4B,QAEAjJ,KAAAqH,KAAAwG,WAGAZ,uBAAA,SAAAhC,GACA,IAAAnL,EAAAE,KAAA4I,kBACA5I,KAAAqH,KAAA+F,OACA,QAAArQ,EAAA,EAAA0D,EAAAwK,EAAAvK,OAA6C3D,EAAA0D,EAAS1D,IACtD,GAAAkO,EAAAlO,GAAAoD,SAAA,CACA,IAAAoM,EAAqB9M,EAAA3C,EAACyP,OAAAtB,EAAAlO,GAAAiF,IAAAiJ,EAAAlO,GAAAgF,KACtBqH,EAAAtJ,EAAAsJ,OACAtH,EAAA9B,KAAA4H,KAAAkG,mBAAAvB,GACAvM,KAAAqH,KAAAgG,YACArN,KAAAqH,KAAA0G,IAAAjM,EAAAQ,EAAAR,EAAAM,EAAAgH,EAAA,IAAA3G,KAAAC,IAAA,GACA1C,KAAAqH,KAAAoG,YAAA3N,EAAAqJ,QACArJ,EAAAiJ,SACA/I,KAAAqH,KAAAqG,YAAA5N,EAAAkJ,MACAhJ,KAAAqH,KAAA0B,UAEAjJ,EAAAmJ,OACAjJ,KAAAqH,KAAAuG,UAAA9N,EAAAoJ,UACAlJ,KAAAqH,KAAA4B,QAIAjJ,KAAAqH,KAAAwG,WAGAX,oBAAA,SAAAjC,GACA,QAAAlO,EAAA,EAAA0D,EAAAwK,EAAAvK,OAA6C3D,EAAA0D,EAAS1D,IACtD,GAAAkO,EAAAlO,GAAAoD,SAAA,CACA,IAAAoM,EAAqB9M,EAAA3C,EAACyP,OAAAtB,EAAAlO,GAAAiF,IAAAiJ,EAAAlO,GAAAgF,KACtBiM,EAA2BvO,EAAA3C,EAACmR,aAAA1B,EAAAvM,KAAA4I,mBAC5BoF,EAAAE,YAAAlO,KAAA2M,gBAAA1B,EAAAlO,IAAAiD,KAAA2J,gBACA3J,KAAAwK,wBAAA2D,SAAAH,KAKAhB,SAAA,SAAAoB,EAAA/B,GACA,IAAAvK,EAAA9B,KAAAiM,eAAAI,GACArM,KAAAqH,KAAA+F,OACApN,KAAAqH,KAAAgH,KAAA,eACArO,KAAAqH,KAAAuG,UAAA,OACA5N,KAAAqH,KAAAiH,UAAA,SACAtO,KAAAqH,KAAAkH,aAAA,SACAvO,KAAAqH,KAAAmH,SAAAJ,EAAAtM,EAAAQ,EAAAR,EAAAM,EAAA,QACApC,KAAAqH,KAAAwG,WAGAd,gBAAA,SAAAV,GACA,IAAAvK,EAAA9B,KAAAiM,eAAAI,GACAoC,EAAApC,EAAA7J,KAAA,EACAkM,EAAA1O,KAAAuJ,cAAAjB,MACAqG,EAAA3O,KAAAuJ,cAAAhB,OACAqG,EAAAD,EAAA,EAEA3O,KAAAqH,KAAA+F,OACApN,KAAAqH,KAAAuG,UAAA5N,KAAAuJ,cAAAL,UACAlJ,KAAAqH,KAAAqG,YAAA1N,KAAAuJ,cAAAP,MACAhJ,KAAAqH,KAAAqB,UAAA5G,EAAAQ,EAAAR,EAAAM,GACApC,KAAAqH,KAAAoH,OAAAhM,KAAAC,GAAA,IAAA+L,GACAzO,KAAAqH,KAAAgG,YACArN,KAAAqH,KAAAiG,OAAA,IAAAqB,EAAA,GACA3O,KAAAqH,KAAAmG,OAAA,EAAAkB,EAAA,IAAAC,EAAA,EAAAC,GACA5O,KAAAqH,KAAAmG,OAAA,EAAAkB,EAAA,IAAAC,EAAA,GACA3O,KAAAqH,KAAAmG,OAAA,EAAAkB,EAAA,IAAAC,EAAA,GACA3O,KAAAqH,KAAAmG,OAAA,EAAAkB,EAAA,IAAAC,EAAA,EAAAC,GACA5O,KAAAqH,KAAAwH,YACA7O,KAAAqH,KAAA4B,OACAjJ,KAAAqH,KAAA0B,SACA/I,KAAAqH,KAAAwG,WAGAf,eAAA,SAAAT,GACA,IAAAvK,EAAA9B,KAAAiM,eAAAI,GACA7J,EAAA6J,EAAA7J,KAAA,EACA8F,EAAAtI,KAAAuJ,cAAAjB,MACAC,EAAAvI,KAAAuJ,cAAAhB,OACAqB,EACAtB,EAAA,EADAsB,EAEArB,EAAA,EAEAvI,KAAAqH,KAAA+F,OACApN,KAAAqH,KAAAqB,UAAA5G,EAAAQ,EAAAR,EAAAM,GACApC,KAAAqH,KAAAoH,OAAAhM,KAAAC,GAAA,IAAAF,GACAxC,KAAAqH,KAAAyH,UAAA9O,KAAA6K,WAAA,EAAAjB,EAAA,EAAAA,EAAAtB,EAAAC,GACAvI,KAAAqH,KAAAwG,WAGAlB,gBAAA,SAAAoC,GACA,IAAAC,KAEA,GADAA,EAAAlO,KAAA,WACAiO,EAAAE,MAAAF,EAAAE,KAAAvO,OACA,QAAA3D,EAAA,EAAA0D,EAAAsO,EAAAE,KAAAvO,OAAkD3D,EAAA0D,EAAS1D,IAC3DiS,EAAAlO,KAAA,QACAkO,EAAAlO,KAAA,OAAAiO,EAAAE,KAAAlS,GAAA4B,IAAA,SACAqQ,EAAAlO,KAAA,OAAAiO,EAAAE,KAAAlS,GAAAsB,MAAA,SACA2Q,EAAAlO,KAAA,SAKA,OAFAkO,EAAAlO,KAAA,YACAkO,IAAAE,KAAA,KAIAxD,YAAA,WACA,IAAAyD,EAAAnP,KAAAmK,YAAAzC,YACA,GAAAyH,EAAA,CACA,IAAAnH,EAAAmH,EAAAlH,UACAjI,KAAAqH,KAAA+H,UAAAD,EAAA9G,IAAA/F,EAAA6M,EAAA9G,IAAAjG,EAAA4F,EAAA1F,EAAA0F,EAAA5F,QAEApC,KAAAqH,KAAA+H,UAAA,IAAApP,KAAAsK,QAAAhC,MAAAtI,KAAAsK,QAAA/B,QAEAvI,KAAA4H,KAAA4D,SAAAxL,KAAAwK,0BACAxK,KAAAwK,wBAAA6E,eAIAC,eAAAjD,GACA,OAAArM,KAAA4H,KAAAkG,mBAAwCrO,EAAA3C,EAACyP,OAAAF,EAAArK,IAAAqK,EAAAtK,SC3TlCwN,EAAsB9P,EAAA3C,EAAC4C,MAAAC,QAE9B4E,SAAY9E,EAAA3C,EAAC0H,MAAAC,OAEb7E,WAAA,SAAA4P,EAAAzI,EAAAjH,MACA,IAAA2P,GACA7G,kBAAA9I,EAAA8I,kBACAS,iBAAAvJ,EAAAuJ,iBACAE,cAAAzJ,EAAAyJ,cACAI,eAAA7J,EAAA6J,gBAEA3J,KAAAoD,OAAApD,KAAA0P,YAAAF,GACAxP,KAAAqD,KAAA,IAAoBsF,EAAI5B,EAAA0I,GACxBzP,KAAA4E,gBAAA,IAA+BzB,EAAenD,KAAAoD,OAAApD,KAAAqD,MAC9CrD,KAAA2P,MAAA,IAAqBrL,EAAKtE,KAAA4E,gBAAA9E,EAAA8P,cAE1B5P,KAAA2P,MAAA1F,GAAA,OAAAjK,KAAAuF,MAAAvF,OAEAoF,MAAA,WAEA,OADApF,KAAA2P,MAAAvK,QACApF,MAEAwF,KAAA,WAEA,OADAxF,KAAA2P,MAAAnK,OACAxF,MAEA0F,UAAA,WAEA,OADA1F,KAAA2P,MAAAjK,YACA1F,MAEA2F,UAAA,WAEA,OADA3F,KAAA2P,MAAAhK,YACA3F,MAEA4F,WAAA,WAEA,OADA5F,KAAA2P,MAAA/J,aACA5F,MAEA6F,SAAA,WACA,OAAA7F,KAAA2P,MAAA9J,YAEAC,WAAA,WACA,OAAA9F,KAAA2P,MAAA7J,cAEAC,aAAA,WACA,OAAA/F,KAAA2P,MAAA5J,gBAEAC,WAAA,WACA,OAAAhG,KAAA2P,MAAA3J,cAEAC,UAAA,WACA,OAAAjG,KAAA2P,MAAA1J,aAEAC,UAAA,SAAAnF,GAEA,OADAf,KAAA2P,MAAAzJ,UAAAnF,GACAf,MAEAoG,SAAA,SAAA1B,GAEA,OADA1E,KAAA2P,MAAAvJ,SAAA1B,GACA1E,MAEAmL,eAAA,WAEA,OADAnL,KAAAqD,KAAA8H,iBACAnL,MAEAoL,eAAA,WAEA,OADApL,KAAAqD,KAAA+H,iBACApL,MAEAqL,cAAA,WAEA,OADArL,KAAAqD,KAAAgI,gBACArL,MAEAsL,cAAA,WAEA,OADAtL,KAAAqD,KAAAiI,gBACAtL,MAEA6P,QAAA,WACA7P,KAAA2P,MAAApE,IAAA,OAAAvL,KAAAuF,OACAvF,KAAAqD,KAAAmE,SACAxH,KAAAoD,OAAA,KACApD,KAAAqD,KAAA,KACArD,KAAA4E,gBAAA,KACA5E,KAAA2P,MAAA,MAEApK,MAAA,SAAAsG,GACA7L,KAAAmG,KAAA,OAAA0F,IAEA6D,YAAA,SAAAF,GACA,IAAApM,KACA,GAAQhE,EAAYoQ,GACpB,GAAUpQ,EAAYoQ,EAAA,IAEtB,QAAAzS,EAAA,EAAA0D,EAAA+O,EAAA9O,OAA0C3D,EAAA0D,EAAS1D,IACnDqG,EAAAtC,KAAA,IAA0BtB,EAAKgQ,EAAAzS,UAI/BqG,EAAAtC,KAAA,IAAwBtB,EAAKgQ,IAG7B,OAAApM,KCrHA3D,EAAA3C,EAACyS,cAAiBA,EAClB9P,EAAA3C,EAACgT,cDwHM,SAAAN,EAAAzI,EAAAjH,GACP,WAAAyP,EAAAC,EAAAzI,EAAAjH","file":"leaflet.trackplayback.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"leaflet\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"leaflet\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"leaflet\")) : factory(root[\"L\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","export function isArray (arr) {\r\n return Array.isArray ? Array.isArray(arr) : Object.prototype.toString.call(arr) === '[object Array]'\r\n}\r\n","import L from 'leaflet'\r\n\r\nimport {\r\n isArray\r\n} from './util'\r\n\r\n/**\r\n * 轨迹类\r\n */\r\nexport const Track = L.Class.extend({\r\n\r\n initialize: function (trackData = [], options) {\r\n L.setOptions(this, options)\r\n\r\n trackData.forEach(item => {\r\n // 添加 isOrigin 字段用来标识是否是原始采样点,与插值点区分开\r\n item.isOrigin = true\r\n })\r\n this._trackPoints = trackData\r\n this._timeTick = {}\r\n this._update()\r\n },\r\n\r\n addTrackPoint: function (trackPoint) {\r\n if (isArray(trackPoint)) {\r\n for (let i = 0, len = trackPoint.length; i < len; i++) {\r\n this.addTrackPoint(trackPoint[i])\r\n }\r\n }\r\n this._addTrackPoint(trackPoint)\r\n },\r\n\r\n getTimes: function () {\r\n let times = []\r\n for (let i = 0, len = this._trackPoints.length; i < len; i++) {\r\n times.push(this._trackPoints[i].time)\r\n }\r\n return times\r\n },\r\n\r\n getStartTrackPoint: function () {\r\n return this._trackPoints[0]\r\n },\r\n\r\n getEndTrackPoint: function () {\r\n return this._trackPoints[this._trackPoints.length - 1]\r\n },\r\n\r\n getTrackPointByTime: function (time) {\r\n return this._trackPoints[this._timeTick[time]]\r\n },\r\n\r\n _getCalculateTrackPointByTime: function (time) {\r\n // 先判断最后一个点是否为原始点\r\n let endpoint = this.getTrackPointByTime(time)\r\n let startPt = this.getStartTrackPoint()\r\n let endPt = this.getEndTrackPoint()\r\n let times = this.getTimes()\r\n if (time < startPt.time || time > endPt.time) return\r\n let left = 0\r\n let right = times.length - 1\r\n let n\r\n // 处理只有一个点情况\r\n if (left === right) {\r\n return endpoint\r\n }\r\n // 通过【二分查找】法查出当前时间所在的时间区间\r\n while (right - left !== 1) {\r\n n = parseInt((left + right) / 2)\r\n if (time > times[n]) left = n\r\n else right = n\r\n }\r\n\r\n let t0 = times[left]\r\n let t1 = times[right]\r\n let t = time\r\n let p0 = this.getTrackPointByTime(t0)\r\n let p1 = this.getTrackPointByTime(t1)\r\n startPt = L.point(p0.lng, p0.lat)\r\n endPt = L.point(p1.lng, p1.lat)\r\n let s = startPt.distanceTo(endPt)\r\n // 不同时间在同一个点情形\r\n if (s <= 0) {\r\n endpoint = p1\r\n return endpoint\r\n }\r\n // 假设目标在两点间做匀速直线运动\r\n // 求解速度向量,并计算时间 t 目标所在位置\r\n let v = s / (t1 - t0)\r\n let sinx = (endPt.y - startPt.y) / s\r\n let cosx = (endPt.x - startPt.x) / s\r\n let step = v * (t - t0)\r\n let x = startPt.x + step * cosx\r\n let y = startPt.y + step * sinx\r\n // 求目标的运动方向,0-360度\r\n let dir = endPt.x >= startPt.x ? (Math.PI * 0.5 - Math.asin(sinx)) * 180 / Math.PI : (Math.PI * 1.5 + Math.asin(sinx)) * 180 / Math.PI\r\n\r\n if (endpoint) {\r\n if (endpoint.dir === undefined) {\r\n endpoint.dir = dir\r\n }\r\n } else {\r\n endpoint = {\r\n lng: x,\r\n lat: y,\r\n dir: dir,\r\n isOrigin: false,\r\n time: time\r\n }\r\n }\r\n return endpoint\r\n },\r\n\r\n // 获取某个时间点之前走过的轨迹\r\n getTrackPointsBeforeTime: function (time) {\r\n let tpoints = []\r\n for (let i = 0, len = this._trackPoints.length; i < len; i++) {\r\n if (this._trackPoints[i].time < time) {\r\n tpoints.push(this._trackPoints[i])\r\n }\r\n }\r\n // 获取最后一个点,根据时间线性插值而来\r\n let endPt = this._getCalculateTrackPointByTime(time)\r\n if (endPt) {\r\n tpoints.push(endPt)\r\n }\r\n return tpoints\r\n },\r\n\r\n _addTrackPoint: function (trackPoint) {\r\n trackPoint.isOrigin = true\r\n this._trackPoints.push(trackPoint)\r\n this._update()\r\n },\r\n\r\n _update: function () {\r\n this._sortTrackPointsByTime()\r\n this._updatetimeTick()\r\n },\r\n\r\n // 轨迹点按时间排序 【冒泡排序】\r\n _sortTrackPointsByTime: function () {\r\n let len = this._trackPoints.length\r\n for (let i = 0; i < len; i++) {\r\n for (let j = 0; j < len - 1 - i; j++) {\r\n if (this._trackPoints[j].time > this._trackPoints[j + 1].time) {\r\n let tmp = this._trackPoints[j + 1]\r\n this._trackPoints[j + 1] = this._trackPoints[j]\r\n this._trackPoints[j] = tmp\r\n }\r\n }\r\n }\r\n },\r\n\r\n // 为轨迹点建立时间索引,优化查找性能\r\n _updatetimeTick: function () {\r\n this._timeTick = {}\r\n for (let i = 0, len = this._trackPoints.length; i < len; i++) {\r\n this._timeTick[this._trackPoints[i].time] = i\r\n }\r\n }\r\n})\r\n\r\nexport const track = function (trackData, options) {\r\n return new Track(trackData, options)\r\n}\r\n","import L from 'leaflet'\r\n\r\nimport {\r\n isArray\r\n} from './util'\r\nimport {\r\n Track\r\n} from './track'\r\n\r\n/**\r\n * 控制器类\r\n * 控制轨迹和绘制\r\n */\r\nexport const TrackController = L.Class.extend({\r\n\r\n initialize: function (tracks = [], draw, options) {\r\n L.setOptions(this, options)\r\n\r\n this._tracks = []\r\n this.addTrack(tracks)\r\n\r\n this._draw = draw\r\n\r\n this._updateTime()\r\n },\r\n\r\n getMinTime: function () {\r\n return this._minTime\r\n },\r\n\r\n getMaxTime: function () {\r\n return this._maxTime\r\n },\r\n\r\n addTrack: function (track) {\r\n if (isArray(track)) {\r\n for (let i = 0, len = track.length; i < len; i++) {\r\n this.addTrack(track[i])\r\n }\r\n } else if (track instanceof Track) {\r\n this._tracks.push(track)\r\n this._updateTime()\r\n } else {\r\n throw new Error('tracks must be an instance of `Track` or an array of `Track` instance!')\r\n }\r\n },\r\n\r\n drawTracksByTime: function (time) {\r\n this._draw.clear()\r\n for (let i = 0, len = this._tracks.length; i < len; i++) {\r\n let track = this._tracks[i]\r\n let tps = track.getTrackPointsBeforeTime(time)\r\n if (tps && tps.length) this._draw.drawTrack(tps)\r\n }\r\n },\r\n\r\n _updateTime: function () {\r\n this._minTime = this._tracks[0].getStartTrackPoint().time\r\n this._maxTime = this._tracks[0].getEndTrackPoint().time\r\n for (let i = 0, len = this._tracks.length; i < len; i++) {\r\n let stime = this._tracks[i].getStartTrackPoint().time\r\n let etime = this._tracks[i].getEndTrackPoint().time\r\n if (stime < this._minTime) {\r\n this._minTime = stime\r\n }\r\n if (etime > this._maxTime) {\r\n this._maxTime = etime\r\n }\r\n }\r\n }\r\n\r\n})\r\n\r\nexport const trackController = function (tracks, draw, options) {\r\n return new TrackController(tracks, draw, options)\r\n}\r\n","import L from 'leaflet'\r\n/**\r\n * 时钟类,控制轨迹播放动画\r\n */\r\nexport const Clock = L.Class.extend({\r\n\r\n includes: L.Mixin.Events,\r\n\r\n options: {\r\n // 播放速度\r\n // 计算方法 fpstime * Math.pow(2, this._speed - 1)\r\n speed: 12,\r\n // 最大播放速度\r\n maxSpeed: 65\r\n },\r\n\r\n initialize: function (trackController, options) {\r\n L.setOptions(this, options)\r\n\r\n this._trackController = trackController\r\n this._endTime = this._trackController.getMaxTime()\r\n this._curTime = this._trackController.getMinTime()\r\n this._speed = this.options.speed\r\n this._maxSpeed = this.options.maxSpeed\r\n this._intervalID = null\r\n this._lastFpsUpdateTime = 0\r\n },\r\n\r\n start: function () {\r\n if (this._intervalID) return\r\n this._intervalID = L.Util.requestAnimFrame(this._tick, this)\r\n },\r\n\r\n stop: function () {\r\n if (!this._intervalID) return\r\n L.Util.cancelAnimFrame(this._intervalID)\r\n this._intervalID = null\r\n this._lastFpsUpdateTime = 0\r\n },\r\n\r\n rePlaying: function () {\r\n this.stop()\r\n this._curTime = this._trackController.getMinTime()\r\n this.start()\r\n },\r\n\r\n slowSpeed: function () {\r\n this._speed = this._speed <= 1 ? this._speed : this._speed - 1\r\n if (this._intervalID) {\r\n this.stop()\r\n this.start()\r\n }\r\n },\r\n\r\n quickSpeed: function () {\r\n this._speed = this._speed >= this._maxSpeed ? this._speed : this._speed + 1\r\n if (this._intervalID) {\r\n this.stop()\r\n this.start()\r\n }\r\n },\r\n\r\n getSpeed: function () {\r\n return this._speed\r\n },\r\n\r\n getCurTime: function () {\r\n return this._curTime\r\n },\r\n\r\n getStartTime: function () {\r\n return this._trackController.getMinTime()\r\n },\r\n\r\n getEndTime: function () {\r\n return this._trackController.getMaxTime()\r\n },\r\n\r\n isPlaying: function () {\r\n return !!this._intervalID\r\n },\r\n\r\n setCursor: function (time) {\r\n this._curTime = time\r\n this._trackController.drawTracksByTime(this._curTime)\r\n this.fire('tick', {\r\n time: this._curTime\r\n })\r\n },\r\n\r\n setSpeed: function (speed) {\r\n this._speed = speed\r\n if (this._intervalID) {\r\n this.stop()\r\n this.start()\r\n }\r\n },\r\n\r\n // 计算两帧时间间隔,单位:秒\r\n _caculatefpsTime: function (now) {\r\n let time\r\n if (this._lastFpsUpdateTime === 0) {\r\n time = 0\r\n } else {\r\n time = now - this._lastFpsUpdateTime\r\n }\r\n this._lastFpsUpdateTime = now\r\n // 将毫秒转换成秒\r\n time = time / 1000\r\n return time\r\n },\r\n\r\n _tick: function () {\r\n let now = +new Date()\r\n let fpstime = this._caculatefpsTime(now)\r\n let isPause = false\r\n let stepTime = fpstime * Math.pow(2, this._speed - 1)\r\n this._curTime += stepTime\r\n if (this._curTime >= this._endTime) {\r\n this._curTime = this._endTime\r\n isPause = true\r\n }\r\n this._trackController.drawTracksByTime(this._curTime)\r\n this.fire('tick', {\r\n time: this._curTime\r\n })\r\n if (!isPause) this._intervalID = L.Util.requestAnimFrame(this._tick, this)\r\n }\r\n})\r\n\r\nexport const clock = function (trackController, options) {\r\n return new Clock(trackController, options)\r\n}\r\n","import L from 'leaflet'\r\n\r\n/**\r\n * 轨迹图层\r\n */\r\nexport const TrackLayer = L.Renderer.extend({\r\n\r\n initialize: function (options) {\r\n L.Renderer.prototype.initialize.call(this, options)\r\n this.options.padding = 0.1\r\n },\r\n\r\n onAdd: function (map) {\r\n this._container = L.DomUtil.create('canvas', 'leaflet-zoom-animated')\r\n\r\n var pane = map.getPane(this.options.pane)\r\n pane.appendChild(this._container)\r\n\r\n this._ctx = this._container.getContext('2d')\r\n\r\n this._update()\r\n },\r\n\r\n onRemove: function (map) {\r\n L.DomUtil.remove(this._container)\r\n },\r\n\r\n getContainer: function () {\r\n return this._container\r\n },\r\n\r\n getBounds: function () {\r\n return this._bounds\r\n },\r\n\r\n _update: function () {\r\n if (this._map._animatingZoom && this._bounds) {\r\n return\r\n }\r\n\r\n L.Renderer.prototype._update.call(this)\r\n\r\n var b = this._bounds\r\n\r\n var container = this._container\r\n\r\n var size = b.getSize()\r\n\r\n var m = L.Browser.retina ? 2 : 1\r\n\r\n L.DomUtil.setPosition(container, b.min)\r\n\r\n // set canvas size (also clearing it); use double size on retina\r\n container.width = m * size.x\r\n container.height = m * size.y\r\n container.style.width = size.x + 'px'\r\n container.style.height = size.y + 'px'\r\n\r\n if (L.Browser.retina) {\r\n this._ctx.scale(2, 2)\r\n }\r\n\r\n // translate so we use the same path coordinates after canvas element moves\r\n this._ctx.translate(-b.min.x, -b.min.y)\r\n\r\n // Tell paths to redraw themselves\r\n this.fire('update')\r\n }\r\n})\r\n","import L from 'leaflet'\r\n\r\nimport {\r\n TrackLayer\r\n} from './tracklayer'\r\n\r\n/**\r\n * 绘制类\r\n * 完成轨迹线、轨迹点、目标物的绘制工作\r\n */\r\nexport const Draw = L.Class.extend({\r\n\r\n trackPointOptions: {\r\n isDraw: false,\r\n useCanvas: true,\r\n stroke: false,\r\n color: '#ef0300',\r\n fill: true,\r\n fillColor: '#ef0300',\r\n opacity: 0.3,\r\n radius: 4\r\n },\r\n trackLineOptions: {\r\n isDraw: false,\r\n stroke: true,\r\n color: '#1C54E2', // stroke color\r\n weight: 2,\r\n fill: false,\r\n fillColor: '#000',\r\n opacity: 0.3\r\n },\r\n targetOptions: {\r\n useImg: false,\r\n imgUrl: '../../static/images/ship.png',\r\n showText: false,\r\n width: 8,\r\n height: 18,\r\n color: '#00f', // stroke color\r\n fillColor: '#9FD12D'\r\n },\r\n toolTipOptions: {\r\n offset: [0, 0],\r\n direction: 'top',\r\n permanent: false\r\n },\r\n\r\n initialize: function (map, options) {\r\n L.extend(this.trackPointOptions, options.trackPointOptions)\r\n L.extend(this.trackLineOptions, options.trackLineOptions)\r\n L.extend(this.targetOptions, options.targetOptions)\r\n L.extend(this.toolTipOptions, options.toolTipOptions)\r\n\r\n this._showTrackPoint = this.trackPointOptions.isDraw\r\n this._showTrackLine = this.trackLineOptions.isDraw\r\n\r\n this._map = map\r\n this._map.on('mousemove', this._onmousemoveEvt, this)\r\n\r\n this._trackLayer = new TrackLayer().addTo(map)\r\n this._trackLayer.on('update', this._trackLayerUpdate, this)\r\n\r\n this._canvas = this._trackLayer.getContainer()\r\n this._ctx = this._canvas.getContext('2d')\r\n\r\n this._bufferTracks = []\r\n\r\n if (!this.trackPointOptions.useCanvas) {\r\n this._trackPointFeatureGroup = L.featureGroup([]).addTo(map)\r\n }\r\n\r\n // 目标如果使用图片,先加载图片\r\n if (this.targetOptions.useImg) {\r\n const img = new Image()\r\n img.onload = () => {\r\n this._targetImg = img\r\n }\r\n img.onerror = () => {\r\n throw new Error('img load error!')\r\n }\r\n img.src = this.targetOptions.imgUrl\r\n }\r\n },\r\n\r\n update: function () {\r\n this._trackLayerUpdate()\r\n },\r\n\r\n drawTrack: function (trackpoints) {\r\n this._bufferTracks.push(trackpoints)\r\n this._drawTrack(trackpoints)\r\n },\r\n\r\n showTrackPoint: function () {\r\n this._showTrackPoint = true\r\n this.update()\r\n },\r\n\r\n hideTrackPoint: function () {\r\n this._showTrackPoint = false\r\n this.update()\r\n },\r\n\r\n showTrackLine: function () {\r\n this._showTrackLine = true\r\n this.update()\r\n },\r\n\r\n hideTrackLine: function () {\r\n this._showTrackLine = false\r\n this.update()\r\n },\r\n\r\n remove: function () {\r\n this._bufferTracks = []\r\n this._trackLayer.off('update', this._trackLayerUpdate, this)\r\n this._map.off('mousemove', this._onmousemoveEvt, this)\r\n if (this._map.hasLayer(this._trackLayer)) {\r\n this._map.removeLayer(this._trackLayer)\r\n }\r\n if (this._map.hasLayer(this._trackPointFeatureGroup)) {\r\n this._map.removeLayer(this._trackPointFeatureGroup)\r\n }\r\n },\r\n\r\n clear: function () {\r\n this._clearLayer()\r\n this._bufferTracks = []\r\n },\r\n\r\n _trackLayerUpdate: function () {\r\n if (this._bufferTracks.length) {\r\n this._clearLayer()\r\n this._bufferTracks.forEach(function (element, index) {\r\n this._drawTrack(element)\r\n }.bind(this))\r\n }\r\n },\r\n\r\n _onmousemoveEvt: function (e) {\r\n if (!this._showTrackPoint) {\r\n return\r\n }\r\n let point = e.layerPoint\r\n if (this._bufferTracks.length) {\r\n for (let i = 0, leni = this._bufferTracks.length; i < leni; i++) {\r\n for (let j = 0, len = this._bufferTracks[i].length; j < len; j++) {\r\n let tpoint = this._getLayerPoint(this._bufferTracks[i][j])\r\n if (point.distanceTo(tpoint) <= this.trackPointOptions.radius) {\r\n this._opentoolTip(this._bufferTracks[i][j])\r\n return\r\n }\r\n }\r\n }\r\n }\r\n if (this._map.hasLayer(this._tooltip)) {\r\n this._map.removeLayer(this._tooltip)\r\n }\r\n this._canvas.style.cursor = 'pointer'\r\n },\r\n\r\n _opentoolTip: function (trackpoint) {\r\n if (this._map.hasLayer(this._tooltip)) {\r\n this._map.removeLayer(this._tooltip)\r\n }\r\n this._canvas.style.cursor = 'default'\r\n let latlng = L.latLng(trackpoint.lat, trackpoint.lng)\r\n let tooltip = this._tooltip = L.tooltip(this.toolTipOptions)\r\n tooltip.setLatLng(latlng)\r\n tooltip.addTo(this._map)\r\n tooltip.setContent(this._getTooltipText(trackpoint))\r\n },\r\n\r\n _drawTrack: function (trackpoints) {\r\n // 画轨迹线\r\n if (this._showTrackLine) {\r\n this._drawTrackLine(trackpoints)\r\n }\r\n // 画船\r\n let targetPoint = trackpoints[trackpoints.length - 1]\r\n if (this.targetOptions.useImg && this._targetImg) {\r\n this._drawShipImage(targetPoint)\r\n } else {\r\n this._drawShipCanvas(targetPoint)\r\n }\r\n // 画标注信息\r\n if (this.targetOptions.showText) {\r\n this._drawtxt(`航向:${parseInt(targetPoint.dir)}度`, targetPoint)\r\n }\r\n // 画经过的轨迹点\r\n if (this._showTrackPoint) {\r\n if (this.trackPointOptions.useCanvas) {\r\n this._drawTrackPointsCanvas(trackpoints)\r\n } else {\r\n this._drawTrackPointsSvg(trackpoints)\r\n }\r\n }\r\n },\r\n\r\n _drawTrackLine: function (trackpoints) {\r\n let options = this.trackLineOptions\r\n let tp0 = this._getLayerPoint(trackpoints[0])\r\n this._ctx.save()\r\n this._ctx.beginPath()\r\n // 画轨迹线\r\n this._ctx.moveTo(tp0.x, tp0.y)\r\n for (let i = 1, len = trackpoints.length; i < len; i++) {\r\n let tpi = this._getLayerPoint(trackpoints[i])\r\n this._ctx.lineTo(tpi.x, tpi.y)\r\n }\r\n this._ctx.globalAlpha = options.opacity\r\n if (options.stroke) {\r\n this._ctx.strokeStyle = options.color\r\n this._ctx.lineWidth = options.weight\r\n this._ctx.stroke()\r\n }\r\n if (options.fill) {\r\n this._ctx.fillStyle = options.fillColor\r\n this._ctx.fill()\r\n }\r\n this._ctx.restore()\r\n },\r\n\r\n _drawTrackPointsCanvas: function (trackpoints) {\r\n let options = this.trackPointOptions\r\n this._ctx.save()\r\n for (let i = 0, len = trackpoints.length; i < len; i++) {\r\n if (trackpoints[i].isOrigin) {\r\n let latLng = L.latLng(trackpoints[i].lat, trackpoints[i].lng)\r\n let radius = options.radius\r\n let point = this._map.latLngToLayerPoint(latLng)\r\n this._ctx.beginPath()\r\n this._ctx.arc(point.x, point.y, radius, 0, Math.PI * 2, false)\r\n this._ctx.globalAlpha = options.opacity\r\n if (options.stroke) {\r\n this._ctx.strokeStyle = options.color\r\n this._ctx.stroke()\r\n }\r\n if (options.fill) {\r\n this._ctx.fillStyle = options.fillColor\r\n this._ctx.fill()\r\n }\r\n }\r\n }\r\n this._ctx.restore()\r\n },\r\n\r\n _drawTrackPointsSvg: function (trackpoints) {\r\n for (let i = 0, len = trackpoints.length; i < len; i++) {\r\n if (trackpoints[i].isOrigin) {\r\n let latLng = L.latLng(trackpoints[i].lat, trackpoints[i].lng)\r\n let cricleMarker = L.circleMarker(latLng, this.trackPointOptions)\r\n cricleMarker.bindTooltip(this._getTooltipText(trackpoints[i]), this.toolTipOptions)\r\n this._trackPointFeatureGroup.addLayer(cricleMarker)\r\n }\r\n }\r\n },\r\n\r\n _drawtxt: function (text, trackpoint) {\r\n let point = this._getLayerPoint(trackpoint)\r\n this._ctx.save()\r\n this._ctx.font = '12px Verdana'\r\n this._ctx.fillStyle = '#000'\r\n this._ctx.textAlign = 'center'\r\n this._ctx.textBaseline = 'bottom'\r\n this._ctx.fillText(text, point.x, point.y - 12, 200)\r\n this._ctx.restore()\r\n },\r\n\r\n _drawShipCanvas: function (trackpoint) {\r\n let point = this._getLayerPoint(trackpoint)\r\n let rotate = trackpoint.dir || 0\r\n let w = this.targetOptions.width\r\n let h = this.targetOptions.height\r\n let dh = h / 3\r\n\r\n this._ctx.save()\r\n this._ctx.fillStyle = this.targetOptions.fillColor\r\n this._ctx.strokeStyle = this.targetOptions.color\r\n this._ctx.translate(point.x, point.y)\r\n this._ctx.rotate((Math.PI / 180) * rotate)\r\n this._ctx.beginPath()\r\n this._ctx.moveTo(0, 0 - h / 2)\r\n this._ctx.lineTo(0 - w / 2, 0 - h / 2 + dh)\r\n this._ctx.lineTo(0 - w / 2, 0 + h / 2)\r\n this._ctx.lineTo(0 + w / 2, 0 + h / 2)\r\n this._ctx.lineTo(0 + w / 2, 0 - h / 2 + dh)\r\n this._ctx.closePath()\r\n this._ctx.fill()\r\n this._ctx.stroke()\r\n this._ctx.restore()\r\n },\r\n\r\n _drawShipImage: function (trackpoint) {\r\n let point = this._getLayerPoint(trackpoint)\r\n let dir = trackpoint.dir || 0\r\n let width = this.targetOptions.width\r\n let height = this.targetOptions.height\r\n let offset = {\r\n x: width / 2,\r\n y: height / 2\r\n }\r\n this._ctx.save()\r\n this._ctx.translate(point.x, point.y)\r\n this._ctx.rotate((Math.PI / 180) * dir)\r\n this._ctx.drawImage(this._targetImg, 0 - offset.x, 0 - offset.y, width, height)\r\n this._ctx.restore()\r\n },\r\n\r\n _getTooltipText: function (targetobj) {\r\n let content = []\r\n content.push('<table>')\r\n if (targetobj.info && targetobj.info.length) {\r\n for (let i = 0, len = targetobj.info.length; i < len; i++) {\r\n content.push('<tr>')\r\n content.push('<td>' + targetobj.info[i].key + '</td>')\r\n content.push('<td>' + targetobj.info[i].value + '</td>')\r\n content.push('</tr>')\r\n }\r\n }\r\n content.push('</table>')\r\n content = content.join('')\r\n return content\r\n },\r\n\r\n _clearLayer: function () {\r\n let bounds = this._trackLayer.getBounds()\r\n if (bounds) {\r\n let size = bounds.getSize()\r\n this._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y)\r\n } else {\r\n this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height)\r\n }\r\n if (this._map.hasLayer(this._trackPointFeatureGroup)) {\r\n this._trackPointFeatureGroup.clearLayers()\r\n }\r\n },\r\n\r\n _getLayerPoint (trackpoint) {\r\n return this._map.latLngToLayerPoint(L.latLng(trackpoint.lat, trackpoint.lng))\r\n }\r\n})\r\n\r\nexport const draw = function (map, options) {\r\n return new Draw(map, options)\r\n}\r\n","import L from 'leaflet'\r\n\r\nimport {\r\n Track\r\n} from './track'\r\nimport {\r\n TrackController\r\n} from './trackcontroller'\r\nimport {\r\n Clock\r\n} from './clock'\r\nimport {\r\n Draw\r\n} from './draw'\r\nimport * as Util from './util'\r\n\r\n/**\r\n * single track data\r\n * [{lat: 30, lng: 116, time: 1502529980, heading: 300, info:[]},{},....]\r\n *\r\n * mutiple track data\r\n * [single track data, single track data, single track data]\r\n */\r\nexport const TrackPlayBack = L.Class.extend({\r\n\r\n includes: L.Mixin.Events,\r\n\r\n initialize: function (data, map, options = {}) {\r\n let drawOptions = {\r\n trackPointOptions: options.trackPointOptions,\r\n trackLineOptions: options.trackLineOptions,\r\n targetOptions: options.targetOptions,\r\n toolTipOptions: options.toolTipOptions\r\n }\r\n this.tracks = this._initTracks(data)\r\n this.draw = new Draw(map, drawOptions)\r\n this.trackController = new TrackController(this.tracks, this.draw)\r\n this.clock = new Clock(this.trackController, options.clockOptions)\r\n\r\n this.clock.on('tick', this._tick, this)\r\n },\r\n start: function () {\r\n this.clock.start()\r\n return this\r\n },\r\n stop: function () {\r\n this.clock.stop()\r\n return this\r\n },\r\n rePlaying: function () {\r\n this.clock.rePlaying()\r\n return this\r\n },\r\n slowSpeed: function () {\r\n this.clock.slowSpeed()\r\n return this\r\n },\r\n quickSpeed: function () {\r\n this.clock.quickSpeed()\r\n return this\r\n },\r\n getSpeed: function () {\r\n return this.clock.getSpeed()\r\n },\r\n getCurTime: function () {\r\n return this.clock.getCurTime()\r\n },\r\n getStartTime: function () {\r\n return this.clock.getStartTime()\r\n },\r\n getEndTime: function () {\r\n return this.clock.getEndTime()\r\n },\r\n isPlaying: function () {\r\n return this.clock.isPlaying()\r\n },\r\n setCursor: function (time) {\r\n this.clock.setCursor(time)\r\n return this\r\n },\r\n setSpeed: function (speed) {\r\n this.clock.setSpeed(speed)\r\n return this\r\n },\r\n showTrackPoint: function () {\r\n this.draw.showTrackPoint()\r\n return this\r\n },\r\n hideTrackPoint: function () {\r\n this.draw.hideTrackPoint()\r\n return this\r\n },\r\n showTrackLine: function () {\r\n this.draw.showTrackLine()\r\n return this\r\n },\r\n hideTrackLine: function () {\r\n this.draw.hideTrackLine()\r\n return this\r\n },\r\n dispose: function () {\r\n this.clock.off('tick', this._tick)\r\n this.draw.remove()\r\n this.tracks = null\r\n this.draw = null\r\n this.trackController = null\r\n this.clock = null\r\n },\r\n _tick: function (e) {\r\n this.fire('tick', e)\r\n },\r\n _initTracks: function (data) {\r\n let tracks = []\r\n if (Util.isArray(data)) {\r\n if (Util.isArray(data[0])) {\r\n // 多条轨迹\r\n for (let i = 0, len = data.length; i < len; i++) {\r\n tracks.push(new Track(data[i]))\r\n }\r\n } else {\r\n // 单条轨迹\r\n tracks.push(new Track(data))\r\n }\r\n }\r\n return tracks\r\n }\r\n})\r\n\r\nexport const trackplayback = function (data, map, options) {\r\n return new TrackPlayBack(data, map, options)\r\n}\r\n","import L from 'leaflet'\r\n\r\nimport {\r\n TrackPlayBack,\r\n trackplayback\r\n} from './trackplayback'\r\n\r\nL.TrackPlayBack = TrackPlayBack\r\nL.trackplayback = trackplayback\r\n"],"sourceRoot":""}