UNPKG

@vuemap/amap-jsapi-loader

Version:

高德官网提供的地图JSAPI加载器,可以避免多种异步加载API的错误用法

13 lines (12 loc) 4.99 kB
var d,e=d||(d={});e.notload="notload";e.loading="loading";e.loaded="loaded";e.failed="failed";let g={key:"",AMap:{version:"1.4.15",plugins:[]},AMapUI:{version:"1.1",plugins:[]},Loca:{version:"1.3.2"}},m={AMap:d.notload,AMapUI:d.notload,Loca:d.notload},n={AMap:[],AMapUI:[],Loca:[]},p=[];function q(a){"function"==typeof a&&(m.AMap===d.loaded?a(window.AMap):p.push(a))}function r(a){let h=[];a.AMapUI&&h.push(t(a.AMapUI));a.Loca&&h.push(u(a.Loca));return Promise.all(h)} function t(a){return new Promise((h,b)=>{let f=[];if(a.plugins)for(var c=0;c<a.plugins.length;c+=1)-1==g.AMapUI.plugins.indexOf(a.plugins[c])&&f.push(a.plugins[c]);if(m.AMapUI===d.failed)b("\u524d\u6b21\u8bf7\u6c42 AMapUI \u5931\u8d25");else if(m.AMapUI===d.notload){m.AMapUI=d.loading;g.AMapUI.version=a.version||g.AMapUI.version;c=g.AMapUI.version;let k=document.body||document.head,l=document.createElement("script");l.type="text/javascript";l.src=`https://webapi.amap.com/ui/${c}/main.js`;l.onerror= ()=>{m.AMapUI=d.failed;b("\u8bf7\u6c42 AMapUI \u5931\u8d25")};l.onload=()=>{m.AMapUI=d.loaded;if(f.length)window.AMapUI.loadUI(f,function(){for(let a=0,b=f.length;a<b;a++){let b=f[a].split("/").slice(-1)[0];window.AMapUI[b]=arguments[a]}for(h();n.AMapUI.length;)n.AMapUI.splice(0,1)[0]()});else for(h();n.AMapUI.length;)n.AMapUI.splice(0,1)[0]()};k.appendChild(l)}else m.AMapUI===d.loaded?a.version&&a.version!==g.AMapUI.version?b("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c AMapUI \u6df7\u7528"):f.length? window.AMapUI.loadUI(f,function(){for(let a=0,b=f.length;a<b;a++){let b=f[a].split("/").slice(-1)[0];window.AMapUI[b]=arguments[a]}h()}):h():a.version&&a.version!==g.AMapUI.version?b("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c AMapUI \u6df7\u7528"):n.AMapUI.push(a=>{a?b(a):f.length?window.AMapUI.loadUI(f,function(){for(let a=0,b=f.length;a<b;a++){let b=f[a].split("/").slice(-1)[0];window.AMapUI[b]=arguments[a]}h()}):h()})})} function u(a){return new Promise((h,b)=>{if(m.Loca===d.failed)b("\u524d\u6b21\u8bf7\u6c42 Loca \u5931\u8d25");else if(m.Loca===d.notload){m.Loca=d.loading;g.Loca.version=a.version||g.Loca.version;let l=g.Loca.version;var f=g.AMap.version.startsWith("2"),c=l.startsWith("2");if(f&&!c||!f&&c)b("JSAPI \u4e0e Loca \u7248\u672c\u4e0d\u5bf9\u5e94\uff01\uff01");else{f=g.key;c=document.body||document.head;var k=document.createElement("script");k.type="text/javascript";k.src=`https://webapi.amap.com/loca?v=${l}&key=${f}`; k.onerror=()=>{m.Loca=d.failed;b("\u8bf7\u6c42 AMapUI \u5931\u8d25")};k.onload=()=>{m.Loca=d.loaded;for(h();n.Loca.length;)n.Loca.splice(0,1)[0]()};c.appendChild(k)}}else m.Loca===d.loaded?a.version&&a.version!==g.Loca.version?b("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c Loca \u6df7\u7528"):h():a.version&&a.version!==g.Loca.version?b("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c Loca \u6df7\u7528"):n.Loca.push(a=>{a?b(a):b()})})} export default {load:function(a){if("undefined"===typeof window)throw Error("AMap JSAPI can only be used in Browser.");return new Promise((h,b)=>{if(m.AMap==d.failed)b("");else if(m.AMap==d.notload){let {key:l,version:k,plugins:v}=a;if(l){window.AMap&&"lbs.amap.com"!==location.host&&b("\u7981\u6b62\u591a\u79cdAPI\u52a0\u8f7d\u65b9\u5f0f\u6df7\u7528");g.key=l;g.AMap.version=k||g.AMap.version;g.AMap.plugins=v||g.AMap.plugins;m.AMap=d.loading;var f=document.body||document.head;window.___onAPILoaded=function(c){delete window.___onAPILoaded; if(c)m.AMap=d.failed,b(c);else for(m.AMap=d.loaded,r(a).then(()=>{h(window.AMap)}).catch(b);p.length;)p.splice(0,1)[0]()};var c=document.createElement("script");c.type="text/javascript";c.src="https://webapi.amap.com/maps?callback=___onAPILoaded&v="+g.AMap.version+"&key="+l+"&plugin="+g.AMap.plugins.join(",");c.onerror=a=>{m.AMap=d.failed;b(a)};f.appendChild(c)}else b("\u8bf7\u586b\u5199key")}else if(m.AMap==d.loaded)if(a.key&&a.key!==g.key)b("\u591a\u4e2a\u4e0d\u4e00\u81f4\u7684 key");else if(a.version&& a.version!==g.AMap.version)b("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c JSAPI \u6df7\u7528");else{f=[];if(a.plugins)for(c=0;c<a.plugins.length;c+=1)-1==g.AMap.plugins.indexOf(a.plugins[c])&&f.push(a.plugins[c]);f.length?window.AMap.plugin(f,()=>{r(a).then(()=>{h(window.AMap)}).catch(b)}):r(a).then(()=>{h(window.AMap)}).catch(b)}else if(a.key&&a.key!==g.key)b("\u591a\u4e2a\u4e0d\u4e00\u81f4\u7684 key");else if(a.version&&a.version!==g.AMap.version)b("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c JSAPI \u6df7\u7528"); else{var k=[];if(a.plugins)for(c=0;c<a.plugins.length;c+=1)-1==g.AMap.plugins.indexOf(a.plugins[c])&&k.push(a.plugins[c]);q(()=>{k.length?window.AMap.plugin(k,()=>{r(a).then(()=>{h(window.AMap)}).catch(b)}):r(a).then(()=>{h(window.AMap)}).catch(b)})}})},reset:function(){delete window.AMap;delete window.AMapUI;delete window.Loca;g={key:"",AMap:{version:"1.4.15",plugins:[]},AMapUI:{version:"1.1",plugins:[]},Loca:{version:"1.3.2"}};m={AMap:d.notload,AMapUI:d.notload,Loca:d.notload};n={AMap:[],AMapUI:[], Loca:[]}}} //# sourceMappingURL=index.mjs.map