UNPKG

23.5 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/mapbox/map.ts"],"names":["CoordinateSystem","MapServiceEvent","TYPES","DOM","mat4","vec3","inject","injectable","mapboxgl","Viewport","window","EventMap","mapmove","camerachange","zoomchange","dragging","MapTheme","mapdivCount","LNGLAT_OFFSET_ZOOM_THRESHOLD","MAPBOX_API_KEY","MapboxService","MapConfig","IGlobalConfigService","ILogService","ICoordinateSystemService","IEventEmitter","map","viewport","markerContainer","cameraChangedCallback","$mapContainer","handleCameraChanged","getCenter","wrap","lat","lng","syncWithMapCamera","bearing","getBearing","center","viewportHeight","transform","height","pitch","getPitch","viewportWidth","width","zoom","getZoom","cameraHeight","coordinateSystemService","setCoordinateSystem","LNGLAT_OFFSET","LNGLAT","container","getCanvasContainer","create","setAttribute","type","handle","indexOf","eventEmitter","on","off","getContainer","size","setZoom","lnglat","setCenter","getBounds","toArray","getMinZoom","getMaxZoom","rotation","setBearing","option","eventData","zoomIn","zoomOut","setPitch","p","panTo","pixel","bound","fitBoundsOptions","fitBounds","max","setMaxZoom","min","setMinZoom","doubleClickZoom","enable","disable","dragEnable","dragPan","rotateEnable","dragRotate","keyboardEnable","keyboard","zoomEnable","scrollZoom","flyTo","style","setStyle","getMapStyle","unproject","project","altitude","MercatorCoordinate","fromLngLat","x","y","z","rotate","scale","origin","modelAsMercatorCoordinate","meters","meterInMercatorCoordinateUnits","modelMatrix","translate","fromValues","rotateX","rotateY","rotateZ","config","id","attributionControl","token","mapInstance","rest","logger","error","configService","getSceneWarninfo","accessToken","warn","creatAmapContainer","Map","removeAllListeners","remove","name","args","emit","once","renderCanvas","getCanvas","layersPng","toDataURL","callback","$wrapper","document","getElementById","$amapdiv","createElement","cssText","appendChild"],"mappings":";;;;;;;;;;;;;;;;AAGA,SAEEA,gBAFF,EAaEC,eAbF,EAeEC,KAfF,QAgBO,eAhBP;AAiBA,SAASC,GAAT,QAAoB,gBAApB;AACA,SAASC,IAAT,EAAqBC,IAArB,QAAiC,WAAjC;AACA,SAASC,MAAT,EAAiBC,UAAjB,QAAmC,WAAnC;AACA,OAAOC,QAAP,MAAwC,WAAxC;;;;AAKA,OAAOC,QAAP,MAAqB,YAArB;AACAC,MAAM,CAACF,QAAP,GAAkBA,QAAlB;AACA,IAAMG,QAEL,GAAG;AACFC,EAAAA,OAAO,EAAE,MADP;AAEFC,EAAAA,YAAY,EAAE,MAFZ;AAGFC,EAAAA,UAAU,EAAE,MAHV;AAIFC,EAAAA,QAAQ,EAAE;AAJR,CAFJ;AAQA,SAASC,QAAT,QAAyB,SAAzB;AACA,IAAIC,WAAW,GAAG,CAAlB;AACA,IAAMC,4BAA4B,GAAG,EAArC;AACA,IAAMC,cAAc,GAClB,gEADF;IAMqBC,a,WADpBb,UAAU,E,UAKRD,MAAM,CAACJ,KAAK,CAACmB,SAAP,C,UAGNf,MAAM,CAACJ,KAAK,CAACoB,oBAAP,C,UAGNhB,MAAM,CAACJ,KAAK,CAACqB,WAAP,C,UAENjB,MAAM,CAACJ,KAAK,CAACsB,wBAAP,C,UAGNlB,MAAM,CAACJ,KAAK,CAACuB,aAAP,C;;;;;;SAbAC,G;;;;;;;;;;;;SAeCC,Q;SACAC,e;SACAC,qB;SACAC,a;;SAwTAC,mB,GAAsB,YAAM;AAAA,kCAEb,KAAI,CAACL,GAAL,CAASM,SAAT,GAAqBC,IAArB,EAFa;AAAA,UAE1BC,GAF0B,yBAE1BA,GAF0B;AAAA,UAErBC,GAFqB,yBAErBA,GAFqB;;AAKlC,MAAA,KAAI,CAACR,QAAL,CAAcS,iBAAd,CAAgC;AAC9BC,QAAAA,OAAO,EAAE,KAAI,CAACX,GAAL,CAASY,UAAT,EADqB;AAE9BC,QAAAA,MAAM,EAAE,CAACJ,GAAD,EAAMD,GAAN,CAFsB;AAG9BM,QAAAA,cAAc,EAAE,KAAI,CAACd,GAAL,CAASe,SAAT,CAAmBC,MAHL;AAI9BC,QAAAA,KAAK,EAAE,KAAI,CAACjB,GAAL,CAASkB,QAAT,EAJuB;AAK9BC,QAAAA,aAAa,EAAE,KAAI,CAACnB,GAAL,CAASe,SAAT,CAAmBK,KALJ;AAM9BC,QAAAA,IAAI,EAAE,KAAI,CAACrB,GAAL,CAASsB,OAAT,EANwB;AAQ9BC,QAAAA,YAAY,EAAE;AARgB,OAAhC;;AAYA,UAAI,KAAI,CAACtB,QAAL,CAAcqB,OAAd,KAA0B9B,4BAA9B,EAA4D;AAC1D,QAAA,KAAI,CAACgC,uBAAL,CAA6BC,mBAA7B,CACEnD,gBAAgB,CAACoD,aADnB;AAGD,OAJD,MAIO;AACL,QAAA,KAAI,CAACF,uBAAL,CAA6BC,mBAA7B,CAAiDnD,gBAAgB,CAACqD,MAAlE;AACD;;AAED,MAAA,KAAI,CAACxB,qBAAL,CAA2B,KAAI,CAACF,QAAhC;AACD,K;;;;;yCA/UiC;AAChC,UAAM2B,SAAS,GAAG,KAAK5B,GAAL,CAAS6B,kBAAT,EAAlB;AACA,WAAK3B,eAAL,GAAuBzB,GAAG,CAACqD,MAAJ,CAAW,KAAX,EAAkB,qBAAlB,EAAyCF,SAAzC,CAAvB;AACA,WAAK1B,eAAL,CAAqB6B,YAArB,CAAkC,UAAlC,EAA8C,IAA9C;AACD;;;yCAEwC;AACvC,aAAO,KAAK7B,eAAZ;AACD;;;uBAGS8B,I,EAAcC,M,EAAwC;AAC9D,UAAI1D,eAAe,CAAC2D,OAAhB,CAAwBF,IAAxB,MAAkC,CAAC,CAAvC,EAA0C;AACxC,aAAKG,YAAL,CAAkBC,EAAlB,CAAqBJ,IAArB,EAA2BC,MAA3B;AACD,OAFD,MAEO;AAEL,aAAKjC,GAAL,CAASoC,EAAT,CAAYnD,QAAQ,CAAC+C,IAAD,CAAR,IAAkBA,IAA9B,EAAoCC,MAApC;AACD;AACF;;;wBACUD,I,EAAcC,M,EAAwC;AAC/D,WAAKjC,GAAL,CAASqC,GAAT,CAAapD,QAAQ,CAAC+C,IAAD,CAAR,IAAkBA,IAA/B,EAAqCC,MAArC;AACD;;;mCAEyC;AACxC,aAAO,KAAKjC,GAAL,CAASsC,YAAT,EAAP;AACD;;;4CAE2C;AAC1C,aAAO,KAAKtC,GAAL,CAAS6B,kBAAT,EAAP;AACD;;;8BAEkC;AACjC,UAAMU,IAAI,GAAG,KAAKvC,GAAL,CAASe,SAAtB;AACA,aAAO,CAACwB,IAAI,CAACnB,KAAN,EAAamB,IAAI,CAACvB,MAAlB,CAAP;AACD;;;8BAGgB;AACf,aAAO,QAAP;AACD;;;8BAEwB;AACvB,aAAO,KAAKhB,GAAL,CAASsB,OAAT,EAAP;AACD;;;4BAEcD,I,EAAc;AAC3B,aAAO,KAAKrB,GAAL,CAASwC,OAAT,CAAiBnB,IAAjB,CAAP;AACD;;;gCAE2B;AAC1B,aAAO,KAAKrB,GAAL,CAASM,SAAT,EAAP;AACD;;;8BAEgBmC,M,EAAgC;AAC/C,WAAKzC,GAAL,CAAS0C,SAAT,CAAmBD,MAAnB;AACD;;;+BAEyB;AACxB,aAAO,KAAKzC,GAAL,CAASkB,QAAT,EAAP;AACD;;;kCAE4B;AAC3B,aAAO,KAAKlB,GAAL,CAASY,UAAT,EAAP;AACD;;;gCAE0B;AACzB,aAAO,KAAKZ,GAAL,CAAS2C,SAAT,GAAqBC,OAArB,EAAP;AACD;;;iCAE2B;AAC1B,aAAO,KAAK5C,GAAL,CAAS6C,UAAT,EAAP;AACD;;;iCAE2B;AAC1B,aAAO,KAAK7C,GAAL,CAAS8C,UAAT,EAAP;AACD;;;gCAEkBC,Q,EAAwB;AACzC,WAAK/C,GAAL,CAASgD,UAAT,CAAoBD,QAApB;AACD;;;2BAEaE,M,EAAcC,S,EAAuB;AACjD,WAAKlD,GAAL,CAASmD,MAAT,CAAgBF,MAAhB,EAAwBC,SAAxB;AACD;;;4BACcD,M,EAAcC,S,EAAuB;AAClD,WAAKlD,GAAL,CAASoD,OAAT,CAAiBH,MAAjB,EAAyBC,SAAzB;AACD;;;6BACejC,K,EAAe;AAC7B,aAAO,KAAKjB,GAAL,CAASqD,QAAT,CAAkBpC,KAAlB,CAAP;AACD;;;0BAEYqC,C,EAA2B;AACtC,WAAKtD,GAAL,CAASuD,KAAT,CAAeD,CAAf;AACD;;;0BAEYE,K,EAA+B;AAC1C,WAAKD,KAAL,CAAWC,KAAX;AACD;;;8BAEgBC,K,EAAeC,gB,EAAkC;AAChE,WAAK1D,GAAL,CAAS2D,SAAT,CAAmBF,KAAnB,EAA0BC,gBAA1B;AACD;;;+BAEiBE,G,EAAmB;AACnC,WAAK5D,GAAL,CAAS6D,UAAT,CAAoBD,GAApB;AACD;;;+BAEiBE,G,EAAmB;AACnC,WAAK9D,GAAL,CAAS+D,UAAT,CAAoBD,GAApB;AACD;;;iCACmBb,M,EAAuC;AACzD,UAAIA,MAAM,CAACe,eAAP,KAA2B,IAA/B,EAAqC;AACnC,aAAKhE,GAAL,CAASgE,eAAT,CAAyBC,MAAzB;AACD;;AACD,UAAIhB,MAAM,CAACe,eAAP,KAA2B,KAA/B,EAAsC;AACpC,aAAKhE,GAAL,CAASgE,eAAT,CAAyBE,OAAzB;AACD;;AACD,UAAIjB,MAAM,CAACkB,UAAP,KAAsB,KAA1B,EAAiC;AAC/B,aAAKnE,GAAL,CAASoE,OAAT,CAAiBF,OAAjB;AACD;;AACD,UAAIjB,MAAM,CAACkB,UAAP,KAAsB,IAA1B,EAAgC;AAC9B,aAAKnE,GAAL,CAASoE,OAAT,CAAiBH,MAAjB;AACD;;AACD,UAAIhB,MAAM,CAACoB,YAAP,KAAwB,KAA5B,EAAmC;AACjC,aAAKrE,GAAL,CAASsE,UAAT,CAAoBJ,OAApB;AACD;;AACD,UAAIjB,MAAM,CAACoB,YAAP,KAAwB,IAA5B,EAAkC;AAChC,aAAKrE,GAAL,CAASsE,UAAT,CAAoBL,MAApB;AACD;;AACD,UAAIhB,MAAM,CAACsB,cAAP,KAA0B,KAA9B,EAAqC;AACnC,aAAKvE,GAAL,CAASwE,QAAT,CAAkBN,OAAlB;AACD;;AACD,UAAIjB,MAAM,CAACsB,cAAP,KAA0B,IAA9B,EAAoC;AAClC,aAAKvE,GAAL,CAASwE,QAAT,CAAkBP,MAAlB;AACD;;AACD,UAAIhB,MAAM,CAACwB,UAAP,KAAsB,KAA1B,EAAiC;AAC/B,aAAKzE,GAAL,CAAS0E,UAAT,CAAoBR,OAApB;AACD;;AACD,UAAIjB,MAAM,CAACwB,UAAP,KAAsB,IAA1B,EAAgC;AAC9B,aAAKzE,GAAL,CAAS0E,UAAT,CAAoBT,MAApB;AACD;AACF;;;qCAEuB5C,I,EAAcR,M,EAAgC;AACpE,WAAKb,GAAL,CAAS2E,KAAT,CAAe;AACbtD,QAAAA,IAAI,EAAJA,IADa;AAEbR,QAAAA,MAAM,EAANA;AAFa,OAAf;AAID;;;gCAEkB+D,K,EAAkB;AACnC,WAAK5E,GAAL,CAAS6E,QAAT,CAAkB,KAAKC,WAAL,CAAiBF,KAAjB,CAAlB;AACD;;;kCAEoBpB,K,EAAkC;AACrD,aAAO,KAAKxD,GAAL,CAAS+E,SAAT,CAAmBvB,KAAnB,CAAP;AACD;;;kCAEoBf,M,EAAkC;AACrD,aAAO,KAAKzC,GAAL,CAASgF,OAAT,CAAiBvC,MAAjB,CAAP;AACD;;;sCAEwBe,K,EAAkC;AACzD,aAAO,KAAKxD,GAAL,CAAS+E,SAAT,CAAmBvB,KAAnB,CAAP;AACD;;;sCAEwBf,M,EAAkC;AACzD,aAAO,KAAKzC,GAAL,CAASgF,OAAT,CAAiBvC,MAAjB,CAAP;AACD;;;qCAECA,M,EACAwC,Q,EACW;AAAA,kCAKPjG,MAAM,CAACF,QAAP,CAAgBoG,kBAAhB,CAAmCC,UAAnC,CAA8C1C,MAA9C,EAAsDwC,QAAtD,CALO;AAAA,yDAETG,CAFS;AAAA,UAETA,CAFS,uCAEL,CAFK;AAAA,yDAGTC,CAHS;AAAA,UAGTA,CAHS,uCAGL,CAHK;AAAA,yDAITC,CAJS;AAAA,UAITA,CAJS,uCAIL,CAJK;;AAMX,aAAO;AAAEF,QAAAA,CAAC,EAADA,CAAF;AAAKC,QAAAA,CAAC,EAADA,CAAL;AAAQC,QAAAA,CAAC,EAADA;AAAR,OAAP;AACD;;;mCAEC7C,M,EACAwC,Q,EACAM,M,EAGU;AAAA,UAFVC,KAEU,uEAFwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAExB;AAAA,UADVC,MACU,uEADU;AAAEL,QAAAA,CAAC,EAAE,CAAL;AAAQC,QAAAA,CAAC,EAAE,CAAX;AAAcC,QAAAA,CAAC,EAAE;AAAjB,OACV;AACV,UAAMI,yBAAyB,GAAG1G,MAAM,CAACF,QAAP,CAAgBoG,kBAAhB,CAAmCC,UAAnC,CAChC1C,MADgC,EAEhCwC,QAFgC,CAAlC;AAKA,UAAMU,MAAM,GAAGD,yBAAyB,CAACE,8BAA1B,EAAf;AACA,UAAMC,WAAW,GAAGnH,IAAI,CAACoD,MAAL,EAApB;AAEApD,MAAAA,IAAI,CAACoH,SAAL,CACED,WADF,EAEEA,WAFF,EAGElH,IAAI,CAACoH,UAAL,CACEL,yBAAyB,CAACN,CAA1B,GAA8BK,MAAM,CAACL,CADvC,EAEEM,yBAAyB,CAACL,CAA1B,GAA8BI,MAAM,CAACJ,CAFvC,EAGEK,yBAAyB,CAACJ,CAA1B,IAA+B,IAAIG,MAAM,CAACH,CAH5C,CAHF;AAUA5G,MAAAA,IAAI,CAAC8G,KAAL,CACEK,WADF,EAEEA,WAFF,EAGElH,IAAI,CAACoH,UAAL,CAAgBJ,MAAM,GAAGH,KAAK,CAAC,CAAD,CAA9B,EAAmC,CAACG,MAAD,GAAUH,KAAK,CAAC,CAAD,CAAlD,EAAuDG,MAAM,GAAGH,KAAK,CAAC,CAAD,CAArE,CAHF;AAMA9G,MAAAA,IAAI,CAACsH,OAAL,CAAaH,WAAb,EAA0BA,WAA1B,EAAuCN,MAAM,CAAC,CAAD,CAA7C;AACA7G,MAAAA,IAAI,CAACuH,OAAL,CAAaJ,WAAb,EAA0BA,WAA1B,EAAuCN,MAAM,CAAC,CAAD,CAA7C;AACA7G,MAAAA,IAAI,CAACwH,OAAL,CAAaL,WAAb,EAA0BA,WAA1B,EAAuCN,MAAM,CAAC,CAAD,CAA7C;AAEA,aAAQM,WAAR;AACD;;;;;;;;;;;+BAWK,KAAKM,M,iCAPPC,E,EAAAA,E,gCAAK,K,yDACLC,kB,EAAAA,kB,sCAAqB,K,4DACrBzB,K,EAAAA,K,mCAAQ,O,yDACR0B,K,EAAAA,K,mCAAQ7G,c,4DACRsD,Q,EAAAA,Q,sCAAW,C,0BACXwD,W,gBAAAA,W,EACGC,I;AAGL,qBAAKvG,QAAL,GAAgB,IAAIlB,QAAJ,EAAhB;;AAQA,oBAAI,CAACwH,WAAD,IAAgB,CAACvH,MAAM,CAACF,QAA5B,EAAsC;AAEpC,uBAAK2H,MAAL,CAAYC,KAAZ,CAAkB,KAAKC,aAAL,CAAmBC,gBAAnB,CAAoC,KAApC,CAAlB;AACD;;AAED,oBACEN,KAAK,KAAK7G,cAAV,IACAmF,KAAK,KAAK,OADV,IAEA,CAAC5F,MAAM,CAACF,QAAP,CAAgB+H,WAFjB,IAGA,CAACN,WAJH,EAKE;AACA,yBAAKE,MAAL,CAAYK,IAAZ,CAAiB,KAAKH,aAAL,CAAmBC,gBAAnB,CAAoC,UAApC,CAAjB;AACD;;AAGD,oBAAI,CAACL,WAAD,IAAgB,CAACvH,MAAM,CAACF,QAAP,CAAgB+H,WAArC,EAAkD;AAEhD7H,kBAAAA,MAAM,CAACF,QAAP,CAAgB+H,WAAhB,GAA8BP,KAA9B;AACD;;AAED,oBAAIC,WAAJ,EAAiB;AAEf,uBAAKvG,GAAL,GAAWuG,WAAX;AACA,uBAAKnG,aAAL,GAAqB,KAAKJ,GAAL,CAASsC,YAAT,EAArB;AACD,iBAJD,MAIO;AACL,uBAAKlC,aAAL,GAAqB,KAAK2G,kBAAL,CAAwBX,EAAxB,CAArB;AAEA,uBAAKpG,GAAL,GAAW,IAAIhB,MAAM,CAACF,QAAP,CAAgBkI,GAApB;AACTpF,oBAAAA,SAAS,EAAE,KAAKxB,aADP;AAETwE,oBAAAA,KAAK,EAAE,KAAKE,WAAL,CAAiBF,KAAjB,CAFE;AAGTyB,oBAAAA,kBAAkB,EAAlBA,kBAHS;AAIT1F,oBAAAA,OAAO,EAAEoC;AAJA,qBAKNyD,IALM,EAAX;AAOD;;AACD,qBAAKxG,GAAL,CAASoC,EAAT,CAAY,MAAZ,EAAoB,KAAK/B,mBAAzB;AACA,qBAAKL,GAAL,CAASoC,EAAT,CAAY,MAAZ,EAAoB,KAAK/B,mBAAzB;AAGA,qBAAKA,mBAAL;;;;;;;;;;;;;;;;;;8BAGe;AACf,WAAK8B,YAAL,CAAkB8E,kBAAlB;;AACA,UAAI,KAAKjH,GAAT,EAAc;AACZ,aAAKA,GAAL,CAASkH,MAAT;AACA,aAAK9G,aAAL,GAAqB,IAArB;AACD;AACF;;;yBACW+G,I,EAA8B;AAAA;;AAAA,wCAAbC,IAAa;AAAbA,QAAAA,IAAa;AAAA;;AACxC,iCAAKjF,YAAL,EAAkBkF,IAAlB,4BAAuBF,IAAvB,SAAgCC,IAAhC;AACD;;;yBACWD,I,EAA8B;AAAA;;AAAA,yCAAbC,IAAa;AAAbA,QAAAA,IAAa;AAAA;;AACxC,kCAAKjF,YAAL,EAAkBmF,IAAlB,6BAAuBH,IAAvB,SAAgCC,IAAhC;AACD;;;sCAEwB;AACvB,aAAO,KAAKhH,aAAZ;AACD;;;8BAEgB4B,I,EAA6B;AAC5C,UAAMuF,YAAY,GAAG,KAAKvH,GAAL,CAASwH,SAAT,EAArB;AACA,UAAMC,SAAS,GACbzF,IAAI,KAAK,KAAT,GACKuF,YADL,aACKA,YADL,uBACKA,YAAY,CAAEG,SAAd,CAAwB,YAAxB,CADL,GAEKH,YAFL,aAEKA,YAFL,uBAEKA,YAAY,CAAEG,SAAd,CAAwB,WAAxB,CAHP;AAIA,aAAOD,SAAP;AACD;;;oCACsBE,Q,EAA+C;AACpE,WAAKxH,qBAAL,GAA6BwH,QAA7B;AACD;;;uCAqC0BvB,E,EAA6B;AACtD,UAAIwB,QAAQ,GAAGxB,EAAf;;AACA,UAAI,OAAOA,EAAP,KAAc,QAAlB,EAA4B;AAC1BwB,QAAAA,QAAQ,GAAGC,QAAQ,CAACC,cAAT,CAAwB1B,EAAxB,CAAX;AACD;;AACD,UAAM2B,QAAQ,GAAGF,QAAQ,CAACG,aAAT,CAAuB,KAAvB,CAAjB;AACAD,MAAAA,QAAQ,CAACnD,KAAT,CAAeqD,OAAf;AAMAF,MAAAA,QAAQ,CAAC3B,EAAT,GAAc,kBAAkB7G,WAAW,EAA3C;AACAqI,MAAAA,QAAQ,CAACM,WAAT,CAAqBH,QAArB;AACA,aAAOA,QAAP;AACD;;;gCACmBZ,I,EAAgB;AAClC,UAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,eAAOA,IAAP;AACD;;AACD,aAAO7H,QAAQ,CAAC6H,IAAD,CAAR,GAAiB7H,QAAQ,CAAC6H,IAAD,CAAzB,GAAkCA,IAAzC;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SApYkBzH,a","sourcesContent":["/**\n * MapboxService\n */\nimport {\n Bounds,\n CoordinateSystem,\n ICoordinateSystemService,\n IGlobalConfigService,\n ILngLat,\n ILogService,\n IMapConfig,\n IMapService,\n IMercator,\n IPoint,\n IStatusOptions,\n IViewport,\n MapServiceEvent,\n MapStyle,\n TYPES,\n} from '@antv/l7-core';\nimport { DOM } from '@antv/l7-utils';\nimport { mat4, vec2, vec3 } from 'gl-matrix';\nimport { inject, injectable } from 'inversify';\nimport mapboxgl, { IControl, Map } from 'mapbox-gl';\n\n// tslint:disable-next-line:no-submodule-imports\nimport 'mapbox-gl/dist/mapbox-gl.css';\nimport { IMapboxInstance } from '../../typings/index';\nimport Viewport from './Viewport';\nwindow.mapboxgl = mapboxgl;\nconst EventMap: {\n [key: string]: any;\n} = {\n mapmove: 'move',\n camerachange: 'move',\n zoomchange: 'zoom',\n dragging: 'drag',\n};\nimport { MapTheme } from './theme';\nlet mapdivCount = 0;\nconst LNGLAT_OFFSET_ZOOM_THRESHOLD = 12;\nconst MAPBOX_API_KEY =\n 'pk.eyJ1IjoibHp4dWUiLCJhIjoiYnhfTURyRSJ9.Ugm314vAKPHBzcPmY1p4KQ';\n/**\n * AMapService\n */\n@injectable()\nexport default class MapboxService\n implements IMapService<Map & IMapboxInstance> {\n public map: Map & IMapboxInstance;\n\n @inject(TYPES.MapConfig)\n private readonly config: Partial<IMapConfig>;\n\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n @inject(TYPES.ILogService)\n private readonly logger: ILogService;\n @inject(TYPES.ICoordinateSystemService)\n private readonly coordinateSystemService: ICoordinateSystemService;\n\n @inject(TYPES.IEventEmitter)\n private eventEmitter: any;\n private viewport: Viewport;\n private markerContainer: HTMLElement;\n private cameraChangedCallback: (viewport: IViewport) => void;\n private $mapContainer: HTMLElement | null;\n\n // init\n public addMarkerContainer(): void {\n const container = this.map.getCanvasContainer();\n this.markerContainer = DOM.create('div', 'l7-marker-container', container);\n this.markerContainer.setAttribute('tabindex', '-1');\n }\n\n public getMarkerContainer(): HTMLElement {\n return this.markerContainer;\n }\n\n // map event\n public on(type: string, handle: (...args: any[]) => void): void {\n if (MapServiceEvent.indexOf(type) !== -1) {\n this.eventEmitter.on(type, handle);\n } else {\n // 统一事件名称\n this.map.on(EventMap[type] || type, handle);\n }\n }\n public off(type: string, handle: (...args: any[]) => void): void {\n this.map.off(EventMap[type] || type, handle);\n }\n\n public getContainer(): HTMLElement | null {\n return this.map.getContainer();\n }\n\n public getMapCanvasContainer(): HTMLElement {\n return this.map.getCanvasContainer() as HTMLElement;\n }\n\n public getSize(): [number, number] {\n const size = this.map.transform;\n return [size.width, size.height];\n }\n // get mapStatus method\n\n public getType() {\n return 'mapbox';\n }\n\n public getZoom(): number {\n return this.map.getZoom();\n }\n\n public setZoom(zoom: number) {\n return this.map.setZoom(zoom);\n }\n\n public getCenter(): ILngLat {\n return this.map.getCenter();\n }\n\n public setCenter(lnglat: [number, number]): void {\n this.map.setCenter(lnglat);\n }\n\n public getPitch(): number {\n return this.map.getPitch();\n }\n\n public getRotation(): number {\n return this.map.getBearing();\n }\n\n public getBounds(): Bounds {\n return this.map.getBounds().toArray() as Bounds;\n }\n\n public getMinZoom(): number {\n return this.map.getMinZoom();\n }\n\n public getMaxZoom(): number {\n return this.map.getMaxZoom();\n }\n\n public setRotation(rotation: number): void {\n this.map.setBearing(rotation);\n }\n\n public zoomIn(option?: any, eventData?: any): void {\n this.map.zoomIn(option, eventData);\n }\n public zoomOut(option?: any, eventData?: any): void {\n this.map.zoomOut(option, eventData);\n }\n public setPitch(pitch: number) {\n return this.map.setPitch(pitch);\n }\n\n public panTo(p: [number, number]): void {\n this.map.panTo(p);\n }\n\n public panBy(pixel: [number, number]): void {\n this.panTo(pixel);\n }\n\n public fitBounds(bound: Bounds, fitBoundsOptions?: unknown): void {\n this.map.fitBounds(bound, fitBoundsOptions as mapboxgl.FitBoundsOptions);\n }\n\n public setMaxZoom(max: number): void {\n this.map.setMaxZoom(max);\n }\n\n public setMinZoom(min: number): void {\n this.map.setMinZoom(min);\n }\n public setMapStatus(option: Partial<IStatusOptions>): void {\n if (option.doubleClickZoom === true) {\n this.map.doubleClickZoom.enable();\n }\n if (option.doubleClickZoom === false) {\n this.map.doubleClickZoom.disable();\n }\n if (option.dragEnable === false) {\n this.map.dragPan.disable();\n }\n if (option.dragEnable === true) {\n this.map.dragPan.enable();\n }\n if (option.rotateEnable === false) {\n this.map.dragRotate.disable();\n }\n if (option.rotateEnable === true) {\n this.map.dragRotate.enable();\n }\n if (option.keyboardEnable === false) {\n this.map.keyboard.disable();\n }\n if (option.keyboardEnable === true) {\n this.map.keyboard.enable();\n }\n if (option.zoomEnable === false) {\n this.map.scrollZoom.disable();\n }\n if (option.zoomEnable === true) {\n this.map.scrollZoom.enable();\n }\n }\n\n public setZoomAndCenter(zoom: number, center: [number, number]): void {\n this.map.flyTo({\n zoom,\n center,\n });\n }\n\n public setMapStyle(style: any): void {\n this.map.setStyle(this.getMapStyle(style));\n }\n // TODO: 计算像素坐标\n public pixelToLngLat(pixel: [number, number]): ILngLat {\n return this.map.unproject(pixel);\n }\n\n public lngLatToPixel(lnglat: [number, number]): IPoint {\n return this.map.project(lnglat);\n }\n\n public containerToLngLat(pixel: [number, number]): ILngLat {\n return this.map.unproject(pixel);\n }\n\n public lngLatToContainer(lnglat: [number, number]): IPoint {\n return this.map.project(lnglat);\n }\n public lngLatToMercator(\n lnglat: [number, number],\n altitude: number,\n ): IMercator {\n const {\n x = 0,\n y = 0,\n z = 0,\n } = window.mapboxgl.MercatorCoordinate.fromLngLat(lnglat, altitude);\n return { x, y, z };\n }\n public getModelMatrix(\n lnglat: [number, number],\n altitude: number,\n rotate: [number, number, number],\n scale: [number, number, number] = [1, 1, 1],\n origin: IMercator = { x: 0, y: 0, z: 0 },\n ): number[] {\n const modelAsMercatorCoordinate = window.mapboxgl.MercatorCoordinate.fromLngLat(\n lnglat,\n altitude,\n );\n // @ts-ignore\n const meters = modelAsMercatorCoordinate.meterInMercatorCoordinateUnits();\n const modelMatrix = mat4.create();\n\n mat4.translate(\n modelMatrix,\n modelMatrix,\n vec3.fromValues(\n modelAsMercatorCoordinate.x - origin.x,\n modelAsMercatorCoordinate.y - origin.y,\n modelAsMercatorCoordinate.z || 0 - origin.z,\n ),\n );\n\n mat4.scale(\n modelMatrix,\n modelMatrix,\n vec3.fromValues(meters * scale[0], -meters * scale[1], meters * scale[2]),\n );\n\n mat4.rotateX(modelMatrix, modelMatrix, rotate[0]);\n mat4.rotateY(modelMatrix, modelMatrix, rotate[1]);\n mat4.rotateZ(modelMatrix, modelMatrix, rotate[2]);\n\n return (modelMatrix as unknown) as number[];\n }\n\n public async init(): Promise<void> {\n const {\n id = 'map',\n attributionControl = false,\n style = 'light',\n token = MAPBOX_API_KEY,\n rotation = 0,\n mapInstance,\n ...rest\n } = this.config;\n\n this.viewport = new Viewport();\n\n /**\n * TODO: 使用 mapbox v0.53.x 版本 custom layer,需要共享 gl context\n * @see https://github.com/mapbox/mapbox-gl-js/blob/master/debug/threejs.html#L61-L64\n */\n\n // 判断全局 mapboxgl 对象的加载\n if (!mapInstance && !window.mapboxgl) {\n // 用户有时传递进来的实例是继承于 mapbox 实例化的,不一定是 mapboxgl 对象。\n this.logger.error(this.configService.getSceneWarninfo('SDK'));\n }\n\n if (\n token === MAPBOX_API_KEY &&\n style !== 'blank' &&\n !window.mapboxgl.accessToken &&\n !mapInstance // 如果用户传递了 mapInstance,应该不去干预实例的 accessToken。\n ) {\n this.logger.warn(this.configService.getSceneWarninfo('MapToken'));\n }\n\n // 判断是否设置了 accessToken\n if (!mapInstance && !window.mapboxgl.accessToken) {\n // 用户有时传递进来的实例是继承于 mapbox 实例化的,不一定是 mapboxgl 对象。\n window.mapboxgl.accessToken = token;\n }\n\n if (mapInstance) {\n // @ts-ignore\n this.map = mapInstance;\n this.$mapContainer = this.map.getContainer();\n } else {\n this.$mapContainer = this.creatAmapContainer(id);\n // @ts-ignore\n this.map = new window.mapboxgl.Map({\n container: this.$mapContainer,\n style: this.getMapStyle(style),\n attributionControl,\n bearing: rotation,\n ...rest,\n });\n }\n this.map.on('load', this.handleCameraChanged);\n this.map.on('move', this.handleCameraChanged);\n\n // 不同于高德地图,需要手动触发首次渲染\n this.handleCameraChanged();\n }\n\n public destroy() {\n this.eventEmitter.removeAllListeners();\n if (this.map) {\n this.map.remove();\n this.$mapContainer = null;\n }\n }\n public emit(name: string, ...args: any[]) {\n this.eventEmitter.emit(name, ...args);\n }\n public once(name: string, ...args: any[]) {\n this.eventEmitter.once(name, ...args);\n }\n\n public getMapContainer() {\n return this.$mapContainer;\n }\n\n public exportMap(type: 'jpg' | 'png'): string {\n const renderCanvas = this.map.getCanvas();\n const layersPng =\n type === 'jpg'\n ? (renderCanvas?.toDataURL('image/jpeg') as string)\n : (renderCanvas?.toDataURL('image/png') as string);\n return layersPng;\n }\n public onCameraChanged(callback: (viewport: IViewport) => void): void {\n this.cameraChangedCallback = callback;\n }\n\n private handleCameraChanged = () => {\n // @see https://github.com/mapbox/mapbox-gl-js/issues/2572\n const { lat, lng } = this.map.getCenter().wrap();\n\n // resync\n this.viewport.syncWithMapCamera({\n bearing: this.map.getBearing(),\n center: [lng, lat],\n viewportHeight: this.map.transform.height,\n pitch: this.map.getPitch(),\n viewportWidth: this.map.transform.width,\n zoom: this.map.getZoom(),\n // mapbox 中固定相机高度为 viewport 高度的 1.5 倍\n cameraHeight: 0,\n });\n\n // set coordinate system\n if (this.viewport.getZoom() > LNGLAT_OFFSET_ZOOM_THRESHOLD) {\n this.coordinateSystemService.setCoordinateSystem(\n CoordinateSystem.LNGLAT_OFFSET,\n );\n } else {\n this.coordinateSystemService.setCoordinateSystem(CoordinateSystem.LNGLAT);\n }\n\n this.cameraChangedCallback(this.viewport);\n };\n\n // private creatAmapContainer(id: string | HTMLDivElement) {\n // let $wrapper = id as HTMLDivElement;\n // if (typeof id === 'string') {\n // $wrapper = document.getElementById(id) as HTMLDivElement;\n // }\n // return $wrapper;\n // }\n private creatAmapContainer(id: string | HTMLDivElement) {\n let $wrapper = id as HTMLDivElement;\n if (typeof id === 'string') {\n $wrapper = document.getElementById(id) as HTMLDivElement;\n }\n const $amapdiv = document.createElement('div');\n $amapdiv.style.cssText += `\n position: absolute;\n top: 0;\n height: 100%;\n width: 100%;\n `;\n $amapdiv.id = 'l7_mapbox_div' + mapdivCount++;\n $wrapper.appendChild($amapdiv);\n return $amapdiv;\n }\n private getMapStyle(name: MapStyle) {\n if (typeof name !== 'string') {\n return name;\n }\n return MapTheme[name] ? MapTheme[name] : name;\n }\n}\n"],"file":"map.js"}
\No newline at end of file