APILoader.ts 907 B

123456789101112131415161718192021222324252627282930313233343536
  1. const protocol = window.location.protocol;
  2. const buildScriptTag = (src: string): HTMLScriptElement => {
  3. const script = document.createElement('script');
  4. script.type = 'text/javascript';
  5. script.async = true;
  6. script.defer = true;
  7. script.src = src;
  8. return script;
  9. };
  10. export const getAMapPlugins = (type: string, map: any, callback: Function) => {
  11. if (map) {
  12. map.plugin([type], (...arg: any) => {
  13. if (callback) {
  14. callback(arg);
  15. }
  16. });
  17. }
  18. };
  19. export const getAMapUiPromise = (version: string = '1.1'): Promise<any> => {
  20. if ((window as any).AMapUI) {
  21. return Promise.resolve();
  22. }
  23. const script = buildScriptTag(`${protocol}//webapi.amap.com/ui/${version}/main-async.js`);
  24. const pro = new Promise((resolve) => {
  25. script.onload = () => {
  26. (window as any).initAMapUI();
  27. resolve(true);
  28. };
  29. });
  30. document.body.append(script);
  31. return pro;
  32. };