apiLoader.js (800B)
1 import loadScript from 'load-script'; 2 3 let _smap = null; 4 let _pending = null; 5 6 function getLoader() { 7 const loaderUrl = 'https://api.mapy.cz/loader.js'; 8 return new Promise((resolve, reject) => { 9 loadScript(loaderUrl, (error) => { 10 if (error) { 11 reject(error); 12 } else { 13 resolve(window.Loader); 14 } 15 }); 16 }); 17 } 18 19 function loadApi(loader) { 20 return new Promise((resolve) => { 21 loader.async = true; 22 loader.load(null, {pano: true}, () => { 23 resolve(window.SMap); 24 }); 25 }); 26 } 27 28 function getSMap() { 29 if (_smap) { 30 return _smap; 31 } 32 if (!_pending) { 33 _pending = getLoader().then((loader) => loadApi(loader)); 34 } 35 return _pending; 36 } 37 38 export {getSMap};